我有这样创建的表:
--
-- 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)
表定义有什么问题?解决此问题的明智方法是什么?
在PostgreSQL中,如果列名和表名都是小写的,则不需要用引号引起来。
—
罗德里戈2015年