PostgreSQL 序列綁定字段與不綁定字段的區別說明

序列綁定字段與不綁定字段的區別

綁定字段

構造數據

drop sequence if exists test_id_seq;
create sequence test_id_seq;
drop table if exists test;
create table test(id int default nextval('test_id_seq'), name text);
alter sequence test_id_seq owned by test.id;

測試

test=# drop table test;
DROP TABLE
test=# \d
Did not find any relations.
test=# 

不綁定字段

構造數據

drop sequence if exists test_id_seq;
create sequence test_id_seq;
drop table if exists test;
create table test(id int default nextval('test_id_seq'), name text);

測試

test=# drop table test;
DROP TABLE
test=# \d
       List of relations
 Schema |  Name   |  Type  | Owner  
--------+-------------+----------+----------
 public | test_id_seq | sequence | postgres
(1 row)

test=# 

總結

序列綁定字段,則刪除表的時候,序列會被一並刪除

序列不綁定字段,則序列與表是獨立的,刪除表不會將序列一並刪除

補充:PG表中字段使用序列類型以及綁定序列實例

兩種方法效果是一樣的

直接看代碼

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。