我的数据库中有一个表,它急需一个自动递增字段。为了创建一个,我将以下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到表中时,我仍然会遇到主键冲突错误。我不明白我错过了什么让它自动递增。
答案 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);