oracle违反主键唯一约束

主键数据绝对没有重复,这是怎么回事!
2024-12-27 15:06:01
推荐回答(3个)
回答1:

你数据库中应该有一张专门的表用来记录主键值的,那里面的值小于现在你表中的主键值,所以当有数据插入时,数据会从那张记录主键值表中获取当前主键值加1,然后插入表,但是表中的值已经存在了,就造成主键唯一冲突。具体原因很多,但是很大一部分是自己手动往表中插入过数据造成的。

这个是我的猜测,希望对你有帮助。

回答2:

这个是因为每个表的主键都具有唯一性,也就是说如果之前主键中已经有这个数值了,那么在此插入的时候就会报这个错误,实际上是保护数据的唯一性的一种做法。
举例(字段名是主键):
insert into 表名(字段名) values( 1111);
以上语句正常插入。
commit;
insert into 表名(字段名) values( 1111);
此时就会报违反唯一性约束。

回答3:

肯定是违反主键约束了。