在數據庫中主鍵的生成通常是經過序列來生成,PG的序列知識主要羅列以下: 數據庫
1.PG序列的建立 併發
方法a:直接在表中指定字段類型是 SERIAL 類型就一了 code
CREATE TABLE person ( id SERIAL, name TEXT );方法b:先建立序列名稱,而後在新建的表中列屬性指定序列就能夠了,該列需INT類型列
CREATE SEQUENCE person_id_seq; CREATE TABLE person ( id INT4 NOT NULL DEFAULT nextval('person_id_seq'), name TEXT );2.PG序列的應用
SELECT currval('person_id_seq') ;查看下一個序列值
SELECT nextval('person_id_seq') ;查看全局的最後一個序列值
select last_value from person_id_seq;重置序列值
select setval(seq_name,new_seq_value);
3.序列刪除當有表字段應用到PG序列時不能直接刪除
drop table table_name;
drop sequence seq_name; table
4.其餘說明
a.currval取得的是當前會話的序列值,在當前會話中該值不會由於其餘會話取了nextval而變化。會變化的是全局的last_value值,而且當前會話中若是沒有讀過nextval值時直接讀currval是會報錯的。
b.對於序列是由建表時指定serial時建立時,刪除該表的同時,對應的序列也會被刪除。
c.表主鍵數據能夠用跟表相關的序列,也能夠用其餘序列,但不推薦,只是PG默認它沒錯。
d.爲使多用戶併發下同一個序列取值不會重複,nextval是不會rollback的,不過能夠使用setval重置
ast