oracle10g - 提交时获取 ORA-00001(违反唯一约束)?

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

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

问题:

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

  • 任何帮助表示赞赏!

    附加信息/问题:

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

    最佳答案

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

    set constraints all immediate;
    

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

    关于oracle10g - 提交时获取 ORA-00001(违反唯一约束)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2176021/

    相关文章:

    sql-server - 将本地托管的 drupal 7 与远程 SQL Server 2000 数据库或 Oracle 10g 连接

    sql - 在 Oracle 子查询中获取 order by 后的第一行

    swift - 获取核心数据中的对象id

    Oracle DBMS_PROFILER 仅在结果表中显示匿名

    sql - Oracle 10g 中的字符串聚合

    database - 外键是否需要引用主键或候选键?

    php - 如何更新其他相关表中的主键/外键?

    java - JPA 的@UniqueConstraint 注释似乎不能保证唯一性

    ravendb - 更改 RavenDB 中的 Id 值

    Spring Data Neo4j -repository.save 和 @Indexed(unique=true)