Sequence是數據庫中一類特殊的對象,其用於生成唯一數字標識符。一個典型的應用場景就是手動生成一系列主鍵。Sequence和MySQL中的AUTO_INCREMENT的概念很像。
創建序列Sequence有2種方式:
第一種,指定列的類型為serial
CREATE TABLE table_name( id serial );
Name | Storage | Size Range |
SMALLSERIAL | 2 bytes | 1 to 32,767 |
SERIAL | 4 bytes | 1 to 2,147,483,647 |
BIGSERIAL | 8 bytes | 1 to 922,337,2036,854,775,807 |
第二種,先創建序列名稱,然后在新建的表中列屬性指定序列就可以了,該列需int 類型
create sequence tbl_xulie2_id_seq increment by 1 minvalue 1 no maxvalue start with 1;
查看序列的名稱
select pg_get_serial_sequence('t1', 'id');
默認的序列名稱為table_name_column_name_seq。 例如CREATE TABLE table_name( id SERIAL );創建的序列名稱為table_name_id_seq。
查看當前值。多次執行結果相同。需要注意的是這里獲取的是本次session中的值,如果該序列在本次session中從來沒有生成過新的數據,則currval會報錯。
select currval('tbl_xulie_id_seq');
查看序列下一個的可用值,每次執行后加1
select nextval('tbl_xulie_id_seq');
重置序列的下一個可用值,從其他地方導入數據后可能需要重置序列的初始值
alter sequence tbl_xulie_id_seq restart with 100;