我在linux服务器中有两个程序a,b,这两个程序使用同一个账户登录oracle。
这两个程序都需要对一张表table进行插入操作,这张表的主键record使用序列进行自增。
但是问题出现了,
一个程序b在对表进行插入操作时,出现ORA-00001错误,而另一个程序a对表进行插入操作时没有问题。
这个问题的出现的原因是什么?
------解决思路----------------------
ORA-00001 违反唯一约束条件
首先查询表的约束条件,确定是哪个字段,然后检查你的应用程序
------解决思路----------------------
正常使用序列不可能取出相同的值
1、看程序代码吧,是不是哪里控制的不正常
2、使用程序前,表中是否已经有数据了,之前的数据与新插入的数据冲突
3、你序列创建的时候是否使用的cycle的模式,这样的序列会循环取值的
------解决思路----------------------
看下你表table主键record的seq的nextval的值是不是表table主键record的最大值加1.如果seq的nextval的值小与表table主键record的最大值,那你的seq就有问题了
------解决思路----------------------
楼主应该检查的是对应Sequence的nextval(下一个值)
有可能楼主的数据存在导入等等原因,没有经过seq操作生成record,出现表中该字段大于序列的下一个值了。