【问题标题】:Getting ORA-00001(unique constraint violated) when COMMITing?提交时获取 ORA-00001(违反唯一约束)?
【发布时间】:2011-01-11 16:08:35
【问题描述】:

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

问题:

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

感谢任何帮助!


其他信息/问题:

“违规”约束标记为 IMMEDIATE 和 NON-DEFERRABLE。这可以在事务中覆盖吗?

【问题讨论】:

    标签: oracle10g primary-key unique-constraint ora-00001


    【解决方案1】:

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

    set constraints all immediate;
    

    另请参阅:http://www.oracle.com/technology/oramag/oracle/03-nov/o63asktom.html

    【讨论】:

      【解决方案2】:

      可以将约束定义为延迟,这意味着它们在提交时检查,而不是在数据更改时检查。请参阅以下 2 个链接:

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

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

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-06
        • 1970-01-01
        • 2016-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多