我正在使用PostgreSQL 9.4和pgAdminIII 1.20客户端。在特定表格上启动INSERT
时,收到错误消息: Details: the key (gid)=(31509) already exists. (SQL State: 23505)
。
我没有在命令中输入gid值,以便让序列完成工作:
INSERT INTO geo_section (idnum, insee, ident) VALUES (25, '015233', '') ;
序列定义如下:
CREATE SEQUENCE geo_section_gid_seq
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 31509
CACHE 1;
ALTER TABLE geo_section_gid_seq
OWNER TO postgres;
以下查询返回34502
:
SELECT max(gid) FROM geo_section ;
因此,我试图改变序列,以便从34503
开始序列:
ALTER SEQUENCE geo_section_gid_seq START 34503 ;
我收到一条成功消息,说明查询已正确执行。但序列START
参数仍保留31509
值...
答案 0 :(得分:5)
要更改序列使用setval函数的下一个值:
select setval('geo_section_gid_seq'::regclass,34503,false)
false:如果你想下一个值将是34503
true:如果你想下一个值将是34504