我有一个这样创建的表:
--
-- Table: #__content
--
CREATE TABLE "jos_content" (
"id" serial NOT NULL,
"asset_id" bigint DEFAULT 0 NOT NULL,
...
"xreference" varchar(50) DEFAULT '' NOT NULL,
PRIMARY KEY ("id")
);
稍后插入一些指定 id 的行:
INSERT INTO "jos_content" VALUES (1,36,'About',...)
稍后插入一些没有 id 的记录,它们因错误而失败:
Error: duplicate key value violates unique constraint
。
显然 id 被定义为一个序列:
每个失败的插入都会增加序列中的指针,直到它增加到不再存在的值并且查询成功。
SELECT nextval('jos_content_id_seq'::regclass)
表定义有什么问题?解决这个问题的聪明方法是什么?