PostgreSQL表id不会自动递增

时间:2013-07-05 11:08:50

标签: database postgresql

我的数据库中有一个表,它急需一个自动递增字段。为了创建一个,我将以下SQL语句运行到前面提到的数据库:

CREATE SEQUENCE table_id_seq
    INCREMENT 1
    NO MINVALUE
    NO MAXVALUE
    START 1
    CACHE 1;

ALTER TABLE ONLY table ALTER COLUMN id SET DEFAULT nextval('table_id_seq'::regclass);
ALTER TABLE ONLY table
    ADD CONSTRAINT table_id PRIMARY KEY (id);

但是,当我尝试将任何两个值INSERT到表中时,我仍然会遇到主键冲突错误。我不明白我错过了什么让它自动递增。

2 个答案:

答案 0 :(得分:0)

使用Entity Framework并对数据库进行更改时,必须记住从数据库更新模型。此外,您必须在再次测试代码之前保存模型,否则它将使用旧模型,而不是获得您正在寻找的结果。

答案 1 :(得分:0)

在序列已经创建之后,我们可以调用NEXTVAL('table_id_seq')自动生成新值。

<强> 1。将序列链接到唯一列

ALTER TABLE ONLY 
ALTER COLUMN id 
SET DEFAULT NEXTVAL('table_id_seq');
ALTER TABLE ONLY table
    ADD CONSTRAINT table_id PRIMARY KEY (id);