postgresql數(shù)據(jù)庫(kù)表ID自增的實(shí)現(xiàn)代碼
postgresql數(shù)據(jù)庫(kù)可以創(chuàng)建主鍵,但是沒(méi)有像mysql那樣直接指定主鍵自增的auto_increment關(guān)鍵字,因此如果在postgresql中創(chuàng)建表指定主鍵自增使用auto_increment會(huì)報(bào)錯(cuò)。那么如何實(shí)現(xiàn)主鍵自增,postgresql通過(guò)序列來(lái)實(shí)現(xiàn)。序列可以實(shí)現(xiàn)自動(dòng)增長(zhǎng),而且表字段可以指定默認(rèn)值,因此可以通過(guò)指定默認(rèn)值的方式來(lái)實(shí)現(xiàn)主鍵自增。
postgresql提供了三種serial類型:smallserial,serial,bigserial,他不是真正的類型,而是在創(chuàng)建唯一標(biāo)識(shí)符列的標(biāo)志以方便使用。bigserial會(huì)創(chuàng)建一個(gè)bigint類型的自增,serial用以創(chuàng)建一個(gè)int類型的自增,依次類推。
下面通過(guò)實(shí)例演示自增ID的實(shí)現(xiàn):

通過(guò)建表語(yǔ)句,可以看到,因?yàn)槭褂昧藄erial類型,所以會(huì)創(chuàng)建一個(gè)關(guān)聯(lián)的sequece,名為aaa_id_seq。
接著查看表結(jié)構(gòu),并向表中插入數(shù)據(jù):

表aaa實(shí)現(xiàn)了id自增功能,表的id默認(rèn)值是nextval('aaa_id_seq'::regclass)。
按照這個(gè)思路,我們可以這么來(lái)干,一般的主鍵表,沒(méi)有使用serial類型,那么我們可以通過(guò)創(chuàng)建序列,并修改表ID默認(rèn)值字段,指定默認(rèn)值字段為序列的nextval。
我們創(chuàng)建一個(gè)普通的int類型ID,并設(shè)置為主鍵。建表不會(huì)出現(xiàn)創(chuàng)建序列的notice內(nèi)容。

這個(gè)表的插入,如果不指定id,那么就會(huì)出現(xiàn)錯(cuò)誤:

接著我們創(chuàng)建一個(gè)序列:
create sequence bbb_id_seq start with 1 increment by 1 no minvalue no maxvalue cache 1;

設(shè)置表bbb的ID字段的默認(rèn)值為nextval(bbb_id_seq)
alter table bbb alter column id set default nextval('bbb_id_seq');

再次向bbb中插入記錄,這次不用關(guān)心ID字段了。

通過(guò)查看表結(jié)構(gòu),看看兩種方式產(chǎn)生的表:

postgresql查找索引的方法也是和mysql不一樣,postgresql查看索引的語(yǔ)法是:select * from pg_indexes where tablename='bbb';或者select * from pg_statio_all_indexes where relname='bbb';

可以看到,postgresql默認(rèn)索引也是通過(guò)btree來(lái)創(chuàng)建的。
最后再補(bǔ)充一點(diǎn)內(nèi)容,查看序列和查看表結(jié)構(gòu)是一樣的,都是使用\d來(lái)查看,比如\d aaa_id_seq。
以上就是postgresql數(shù)據(jù)庫(kù)表ID自增的實(shí)現(xiàn)代碼的詳細(xì)內(nèi)容,更多關(guān)于postgresql數(shù)據(jù)庫(kù)表ID自增的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
玩轉(zhuǎn)PostgreSQL之30個(gè)實(shí)用SQL語(yǔ)句
本文主要整理總結(jié)了30個(gè)實(shí)用SQL,方便大家可以高效利用PostgreSQL,需要的朋友可以參考下2022-11-11
PostgreSQL的generate_series()函數(shù)的用法說(shuō)明
這篇文章主要介紹了PostgreSQL的generate_series()函數(shù)的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
PostgreSQL 中的postgres_fdw擴(kuò)展詳解
這篇文章主要介紹了PostgreSQL 中的postgres_fdw擴(kuò)展詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
PostgreSQL 行列轉(zhuǎn)換的實(shí)現(xiàn)方法
本文主要介紹了PostgreSQL 行列轉(zhuǎn)換的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-07-07
postgresql 計(jì)算距離的實(shí)例(單位直接生成米)
這篇文章主要介紹了postgresql 計(jì)算距離的實(shí)例(單位直接生成米),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
PostgreSQL數(shù)據(jù)庫(kù)字符串拼接、大小寫(xiě)轉(zhuǎn)換以及substring詳解
在日常工作中會(huì)遇到將多行的值拼接為一個(gè)值展現(xiàn),下面這篇文章主要給大家介紹了關(guān)于PostgreSQL數(shù)據(jù)庫(kù)字符串拼接、大小寫(xiě)轉(zhuǎn)換以及substring的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04
解決sqoop import 導(dǎo)入到hive后數(shù)據(jù)量變多的問(wèn)題
這篇文章主要介紹了解決sqoop import 導(dǎo)入到hive后數(shù)據(jù)量變多的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
PostgreSQL使用jsonb進(jìn)行數(shù)組增刪改查的操作詳解
有時(shí)候我們需要使用PostgreSQL這種結(jié)構(gòu)化數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)一些非結(jié)構(gòu)化數(shù)據(jù),PostgreSQL恰好又提供了json這種數(shù)據(jù)類型,這里我們來(lái)簡(jiǎn)單介紹使用jsonb的一些常見(jiàn)操作,需要的朋友可以參考下2024-03-03

