postgresql – postgres autoincrement没有更新显式id插入
发布时间:2020-12-13 16:41:56 所属栏目:百科 来源:网络整理
导读:我在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 ('g
我在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. 我从来没有在MyISAM和INNODB引擎中的Mysql中遇到这个问题。显而易见,mysql总是根据最大行ID来更新autoincrement指针。 postgres中的这个问题的解决方法是什么?我需要它,因为我想对我的表中的一些ids进行更严格的控制。 更新: 我认为只要我明确地插入ids,可能手动将nextval指针递增到max(id)1。但我不知道该怎么做
这就是它应该如何工作 – 仅当系统需要此列的值并且尚未提供的值时,才会调用next_val(‘test_id_seq’)。如果您提供值,则不执行此类呼叫,因此序列不会“更新”。
您可以使用明确提供的值在上次插入之后手动输入序列值为setting: SELECT setval('test_id_seq',(SELECT MAX(id) from "test")); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |