欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PostgreSQL建立自增主鍵的2種方法總結(jié)

 更新時間:2023年09月28日 16:25:17   作者:AiTtang  
這篇文章主要給大家介紹了關(guān)于PostgreSQL建立自增主鍵的2種方法,PostgreSQL主鍵自增是一種自動增長的機制,可以為表中的每一行記錄分配唯一的標(biāo)識符,需要的朋友可以參考下

一、 準(zhǔn)備工作

首先創(chuàng)建一張表:

create table test(
	id int primary key,
	age int
)

二、 第一種方法----創(chuàng)建序列達(dá)到自增的效果

1. 創(chuàng)建序列

pgsql里,有種東西叫自增,很像mysql里的約束。建立一個自增的序列,每次需要獲取自增主鍵時,調(diào)用一下這個序列就可以了。建立自增主鍵的序列的語法:

CREATE SEQUENCE 
test_id_seq
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START WITH 1
CACHE 1; 
  • INCREMENT BY : 每次序列增加(或減少)的步長
  • MINVALUE : 序列最小值,NO MINVALUE表示沒有最小值
  • MAXVALUE : 序列最大值,NO MAXVALUE表示沒有最大值
  • START WITH :以什么序列值開始
  • CYCLE : 序列是否循環(huán)使用
  • OWNED BY : 可以直接指定一個表的字段,也可以不指定。

需要自增主鍵的時候,調(diào)用nextval(序列名)就可以了:

test=#  select nextval('test_id_seq');
 nextval
 ---------
1

2. 序列的相關(guān)方法

相關(guān)的方法如下(regclass 表示序列的名稱):

函數(shù)返回類型描述
currval( regclass )bigint獲取指定序列最近一次使用netxval后的數(shù)值,如果沒有使用nextval而直接使用currval會出錯
lastval()bigint返回最近一次用 nextval 獲取的任意序列的數(shù)值
nextval( regclass )bigint遞增序列并返回新值
setval( regclass,bigint )bigint設(shè)置序列的當(dāng)前數(shù)值
setval( regclass,bigint ,boolean )bigint設(shè)置序列的當(dāng)前數(shù)值以及 is_called 標(biāo)志,如果為true則立即生效,如果為false,則調(diào)用一次nextval后才會生效

需要什么值就去找具體的函數(shù)就行了。

3. 插入數(shù)據(jù)

假設(shè)現(xiàn)在要向test表中插入數(shù)據(jù),id自增,則:

insert into test values(
	nextval('test_id_seq') , 1 
)

但是這種操作,每次都得寫一遍序列名,很煩。不過有辦法解決??聪旅妫?/p>

4. 設(shè)置默認(rèn)值

可以設(shè)置id字段的默認(rèn)值為nextval(‘test_id_seq’),這樣插入數(shù)據(jù)就不用每次都寫一遍了。

alter table 
	test -- 表名
alter column 
	id -- 列名 
set default nextval(
	'test_id_seq'  -- 序列名
);

再向test表中插入數(shù)據(jù),這樣寫就行了:

insert into test(age) values(12)

或者直接:

insert into test values(12)

三、第二種方法----使用SERIAL

1. 建表語句

使用serial時,建表語句需要改一下:

create table test(
	id serial primary key,
	age int
)

這時候,會自動創(chuàng)建名為表名_字段名_seq的序列,且MAXVALUE=9223372036854775807,其余值為1。

例如,建立上表以后,則自動創(chuàng)建出名為test_id_seq的序列。

2. 插入數(shù)據(jù)

插入數(shù)據(jù),這樣寫就行了:

insert into test(age) values(12)

或者直接:

insert into test values(12)

3. 如何獲取序列的當(dāng)前值

使用如下sql可以獲取序列當(dāng)前值:

select currval('test_id_seq')

總結(jié) 

到此這篇關(guān)于PostgreSQL建立自增主鍵的2種方法的文章就介紹到這了,更多相關(guān)PostgreSQL建立自增主鍵內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • PostgreSQL的整型、浮點型、固定精度數(shù)值和序列等數(shù)字類型

    PostgreSQL的整型、浮點型、固定精度數(shù)值和序列等數(shù)字類型

    PostgreSQL(簡稱PGSQL)是一種開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng),廣泛應(yīng)用于企業(yè)級應(yīng)用,文章詳細(xì)介紹了PostgreSQL的數(shù)字類型,包括整型、浮點型、固定精度數(shù)值型和序列類型,強調(diào)了選擇合適的數(shù)字類型對于數(shù)據(jù)庫的存儲效率、查詢性能和數(shù)據(jù)準(zhǔn)確性的重要性
    2024-09-09
  • PostgreSQL如何用psql運行SQL文件

    PostgreSQL如何用psql運行SQL文件

    文章介紹了兩種運行預(yù)寫好的SQL文件的方式:首先連接數(shù)據(jù)庫后執(zhí)行,或者直接通過psql命令執(zhí)行,需要注意的是,文件路徑在Linux系統(tǒng)中應(yīng)使用斜杠/,而不是反斜杠\,否則會報Permission denied錯誤
    2024-12-12
  • PostgreSQL如何按照某一字段去重,并顯示其他字段信息

    PostgreSQL如何按照某一字段去重,并顯示其他字段信息

    這篇文章主要介紹了PostgreSQL如何按照某一字段去重,并顯示其他字段信息問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • PostgreSQL15.x安裝的詳細(xì)教程

    PostgreSQL15.x安裝的詳細(xì)教程

    PostgreSQL 是一個功能強大的開源關(guān)系型數(shù)據(jù)庫系統(tǒng),基于 C 語言實現(xiàn),采用 PostgreSQL 許可證,這是一種自由軟件許可證,允許用戶自由使用、修改和分發(fā)源代碼,所以本文將給大家介紹PostgreSQL15.x安裝的詳細(xì)教程,需要的朋友可以參考下
    2024-09-09
  • 詳解如何在Ubuntu?18.04上安裝和使用PostgreSQL

    詳解如何在Ubuntu?18.04上安裝和使用PostgreSQL

    關(guān)系數(shù)據(jù)庫管理系統(tǒng)是許多網(wǎng)站和應(yīng)用程序的關(guān)鍵組件,它們提供了一種結(jié)構(gòu)化的方式來存儲、組織和訪問信息,本文演示了如何在?Ubuntu?18.04?VPS?實例上安裝?Postgres,并提供了基本數(shù)據(jù)庫管理的說明,需要的朋友可以參考下
    2024-07-07
  • PostgreSQL數(shù)據(jù)庫事務(wù)實現(xiàn)方法分析

    PostgreSQL數(shù)據(jù)庫事務(wù)實現(xiàn)方法分析

    這篇文章主要介紹了PostgreSQL數(shù)據(jù)庫事務(wù)實現(xiàn)方法,簡單講述了事務(wù)的概念、功能,并結(jié)合實例形式分析了PostgreSQL數(shù)據(jù)庫事務(wù)的定義方法及相關(guān)注意事項,需要的朋友可以參考下
    2018-08-08
  • postgresql 實現(xiàn)sql多行語句合并一行

    postgresql 實現(xiàn)sql多行語句合并一行

    這篇文章主要介紹了postgresql 實現(xiàn)sql多行語句合并一行的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 查詢PostgreSQL中所有表邏輯外鍵的方法

    查詢PostgreSQL中所有表邏輯外鍵的方法

    本文介紹了如何查詢PostgreSQL中所有表的邏輯外鍵,并指導(dǎo)您如何先刪除再重新建立這些外鍵,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友一起看看吧
    2023-08-08
  • 使用pg_basebackup對Postgre進(jìn)行備份與恢復(fù)的實現(xiàn)

    使用pg_basebackup對Postgre進(jìn)行備份與恢復(fù)的實現(xiàn)

    這篇文章主要介紹了使用pg_basebackup對Postgre進(jìn)行備份與恢復(fù)的實現(xiàn)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • postgreSql分組統(tǒng)計數(shù)據(jù)的實現(xiàn)代碼

    postgreSql分組統(tǒng)計數(shù)據(jù)的實現(xiàn)代碼

    這篇文章給大家介紹postgreSql的監(jiān)控記錄表里多條不同時間的數(shù)據(jù),只取最新的數(shù)據(jù),并分組統(tǒng)計,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-12-12

最新評論