我在Postgres中有如下表格:
CREATE TABLE "test" (
"id" serial NOT NULL PRIMARY KEY,
"value" text
)
我正在进行以下插入操作:
insert into test (id, value) values (1, 'alpha')
insert into test (id, value) values (2, 'beta')
insert into test (value) values ('gamma')
在前两个插入语句中,我明确地指定了id。然而,在这种情况下,表的自增指针未更新。因此,在第三个插入操作中,我会收到错误提示:
ERROR: duplicate key value violates unique constraint "test_pkey"
DETAIL: Key (id)=(1) already exists.
在MySQL的MyISAM和INNODB引擎中,我从未遇到过这个问题。无论是否显式指定,Mysql总是基于最大行ID更新自动增量指针。
那么,在Postgres中如何解决这个问题呢?我需要解决此问题,因为我想对表中的某些id进行更严格的控制。
更新: 我需要这样做是因为对于某些值,我需要一个固定的id。对于其他新条目,我不介意创建新条目。
我认为,当我显式插入id时,可以通过手动将nextval
指针递增到max(id) + 1
来实现。但我不确定如何做到这一点。