【发布时间】:2014-06-10 19:09:58
【问题描述】:
在 postgresql 中遇到自动增量属性的一些问题
我创建了一个表说 emp
create table emp
( empid serial,
empname varcha(50),
primary key (empid)
);
我插入了一个 empid 为空白的值:
insert into emp (empname) values ('test1');
通过指定empid值进行下一次插入:
insert into emp (empid,empname) values (2,'test2');
现在,如果我下次插入一个值而不指定 empid 值,它会报错,因为它会尝试将 empid 插入为 2:
insert into emp (empname) values ('test3');
错误:重复键值违反唯一约束“emp_pkey”
详细信息:键 (empid)=(2) 已存在。
有人可以帮我解决这个问题,这样无论是否指定一个值,自动增量都应该选择 max(value) +1 ??
谢谢
【问题讨论】:
-
这不是序列的工作方式。如果您希望它们自动工作,请不要为列指定值。
-
有解决办法吗?问题是我在程序中有一些带有 empid 值的插入,无法删除......所以只是想检查是否有办法解决这个错误?
-
不要与症状作斗争,解决问题:将代码更改为使用
nextval()或根本没有价值
标签: sql postgresql auto-increment