开发者

Getting ORA-00001(unique constraint violated) when COMMITing?

We're getting a ORA-00001 (unique constraint violated) in a batch job. However, the error occurs when a COMMIT is issued, not at the time the offending record is inserted.

Questions:

  • How come that the unique constraint is che开发者_如何学编程cked at COMMIT? (Are there some settings we can use so that the check occurs at the time of the INSERT?)
  • How can we find out the offending SQL/record that lead to the unique constraint violation?

Any help is appreciated!


Additional Information/Question:

The "offending" constraint is marked as IMMEDIATE and NON-DEFERRABLE. Can this be overridden in the transaction?


Constraints can be marked/defined as deferrable. In that case constraint checks can be either "immediate" or "deferred". When defining the constraint you can set a default/initial value, initially immediate or initially deferred. When set to deferred the constraint is enforced not until you commit the transaction.
You can change the behaviour of deferrable constraints e.g. via

set constraints all immediate;

see also: http://www.oracle.com/technology/oramag/oracle/03-nov/o63asktom.html


Constrains can be defined as deferred, meaning that they are checked at commit, not at the time of the data change. See the following 2 links:

http://www.oracle-base.com/articles/8i/ConstraintCheckingUpdates.php

http://www.oracle.com/technology/oramag/oracle/03-nov/o63asktom.html

hope it helps

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜