COMMITing时获取ORA-00001(违反了唯一约束)?

Tho*_*ten 7 primary-key oracle10g unique-constraint ora-00001

我们在批处理作业中获得了ORA-00001(违反了唯一约束).但是,发出COMMIT时会发生错误,而不是在插入违规记录时发生.

问题:

  • 为什么在COMMIT检查唯一约束?(我们可以使用一些设置,以便在INSERT时进行检查吗?)
  • 我们如何找出导致唯一约束违规的违规SQL /记录?

任何帮助表示赞赏!


附加信息/问题:

"违规"约束标记为"立即"和"不可延迟".这可以在交易中被覆盖吗?

Vol*_*erK 5

约束可以标记/定义为可延迟.在这种情况下,约束检查可以是"立即"或"延迟".定义约束时,您可以设置默认/初始值,initially immediateinitially deferred.设置为deferred约束时,直到您提交事务为止.
您可以更改可延迟约束的行为,例如通过

set constraints all immediate;
Run Code Online (Sandbox Code Playgroud)

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