我们在批处理作业中收到ORA-00001(违反了唯一约束)。但是,发出COMMIT时会发生错误,而不是在插入违规记录时发生错误。
问题:
感谢任何帮助!
其他信息/问题:
“违规”约束标记为“立即”和“不可延迟”。这可以在交易中被覆盖吗?
答案 0 :(得分:5)
约束可以标记/定义为可延迟。在这种情况下,约束检查可以是“立即”或“延迟”。定义约束时,您可以设置默认/初始值initially immediate
或initially deferred
。设置为deferred
时,强制执行约束,直到您提交事务为止
您可以更改可延迟约束的行为,例如通过
set constraints all immediate;
另见:http://www.oracle.com/technology/oramag/oracle/03-nov/o63asktom.html
答案 1 :(得分:3)
约束可以定义为延迟,这意味着它们在提交时进行检查,而不是在数据更改时进行检查。请参阅以下2个链接:
http://www.oracle-base.com/articles/8i/ConstraintCheckingUpdates.php
http://www.oracle.com/technology/oramag/oracle/03-nov/o63asktom.html
希望有所帮助