This question already has answers here:
How to reset postgres' primary key sequence when it falls out of sync?
(28个答案)
两年前关闭。
我桌上有一把钥匙,如下所示:
CREATE TABLE a (
    id serial NOT NULL,
    valuea citext NOT NULL,
    CONSTRAINT a_pkey PRIMARY KEY (id),
);

表包含以下行:
id value
198  b
199  j

我无意中插入了
Insert Into a(id,valuea) values (200,'hello');

现在,当我尝试以正确的方式插入另一个时:
Insert Into a(valuea) values ('b');

我希望它插入(201,b),但是串行计数器不知道200已经被使用,因为最后一次手动插入。
我得到:
错误:重复的键值违反了唯一约束
“AppKEY”细节:密钥(ID)=(200)已经存在。
我理解这个错误。。基本上这是因为我上次插入的不是序列号,所以它的计数器没有上升。
我不知道的是怎么解决?
如何告诉串行计数器从201开始?

最佳答案

您需要找到序列名,通常类似于<your table>_id_seq并执行以下操作:

ALTER SEQUENCE a_id_seq INCREMENT BY 1;

关于sql - 如何在PostgreSQL中设置串行类型的值? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47011083/

10-15 18:33