2010-02-01 27 views
7

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

问题:

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

任何帮助表示赞赏!


更多信息/问题:

“攻击” 的约束被标记为直接和不可延迟。这可以在交易中被覆盖吗?

回答

5

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

set constraints all immediate; 

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