如何在 postgres 中强制执行自动增量?

How do I enforce an auto increment in postgres?

我可以通过设置一个序列并将表列默认值设置为该序列来创建自动递增,但我仍然可以手动输入一个不是该序列的值。如何在插入时强制执行对此的约束?使用触发器是唯一的方法吗?

这有帮助吗?

我测试过这个,你可以插入主键,只要它是唯一的。如果它为 Null,则自动序列启动 (tablename_colname_seq) 并插入一个 UNIQUE 主键。

-- Table: test
CREATE SEQUENCE tablename_colname_seq;


CREATE TABLE foo( primary_id int not null UNIQUE default  nextval('tablename_colname_seq'),

a_nother int ) 
WITH ( OIDS=FALSE );

改变 TABLE foo postgres 的所有者;

-- 测试数据

insert into foo (primary_id) values(14)
insert into foo (a_nother) values(13);
select * from foo;

祝一切顺利