最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、 準(zhǔn)備工作

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

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

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

1. 創(chuàng)建序列

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

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

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

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

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

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

函數(shù)返回類型描述
currval( regclass )bigint獲取指定序列最近一次使用netxval后的數(shù)值,如果沒(méi)有使用nextval而直接使用currval會(huì)出錯(cuò)
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后才會(huì)生效

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

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

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

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

但是這種操作,每次都得寫一遍序列名,很煩。不過(guò)有辦法解決??聪旅妫?/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. 建表語(yǔ)句

使用serial時(shí),建表語(yǔ)句需要改一下:

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

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

例如,建立上表以后,則自動(dòng)創(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

泸溪县| 肥乡县| 灵台县| 太仓市| 鹤岗市| 钟祥市| 昌黎县| 仙居县| 南开区| 香港| 鹤壁市| 连平县| 普陀区| 天门市| 松滋市| 滨州市| 宿迁市| 四子王旗| 鞍山市| 利辛县| 满洲里市| 云和县| 中江县| 南靖县| 神农架林区| 青浦区| 随州市| 泽州县| 大埔县| 象山县| 福贡县| 兴山县| 永顺县| 澄迈县| 乌审旗| 蓝田县| 通榆县| 陇西县| 永春县| 海门市| 石狮市|