我们得到了批处理作业中的ORA-00001(违反了唯一约束)。但是,发出COMMIT时发生错误,而不是在插入违规记录时。在COMMITing时获取ORA-00001(违反唯一约束)?
问题:
- 怎么说,唯一约束在COMMIT检查? (我们可以使用一些设置,以便在INSERT时检查吗?)
- 我们如何才能找出导致违反唯一约束的违规SQL /记录?
任何帮助表示赞赏!
更多信息/问题:
“攻击” 的约束被标记为直接和不可延迟。这可以在交易中被覆盖吗?
我们得到了批处理作业中的ORA-00001(违反了唯一约束)。但是,发出COMMIT时发生错误,而不是在插入违规记录时。在COMMITing时获取ORA-00001(违反唯一约束)?
问题:
任何帮助表示赞赏!
更多信息/问题:
“攻击” 的约束被标记为直接和不可延迟。这可以在交易中被覆盖吗?
约束可以标记/定义为可延迟。在这种情况下,约束检查可以是“立即”或“延迟”。在定义约束条件时,您可以设置默认值/初始值initially immediate
或initially deferred
。当设置为deferred
时,约束将被执行直到您提交事务。
您可以更改可延迟约束的行为,例如通过
set constraints all immediate;
还看到:http://www.oracle.com/technology/oramag/oracle/03-nov/o63asktom.html
约束可以定义为延迟,意味着它们在提交时被检查,而不是在数据改变时被检查。请参阅下面的2个链接:
http://www.oracle-base.com/articles/8i/ConstraintCheckingUpdates.php
http://www.oracle.com/technology/oramag/oracle/03-nov/o63asktom.html
希望它有助于