PostgreSQL 序列使用

在數據庫中主鍵的生成通常是經過序列來生成,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

相關文章
相關標籤/搜索