【发布时间】:2016-10-29 05:41:54
【问题描述】:
我正在使用 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 值...
【问题讨论】:
-
也许您忘记(在创建序列后)将其附加到 geo_section.gid ?
ALTER TABLE ONLY geo_section ALTER COLUMN gid SET DEFAULT nextval('geo_section_gid_seq'::regclass); ALTER SEQUENCE geo_section_gid_seq OWNED BY geo_section.gid;
标签: postgresql primary-key sequence postgresql-9.4