【问题标题】:Constraint exceptions after dropping Unique Constraint删除唯一约束后的约束异常
【发布时间】:2014-12-10 10:54:59
【问题描述】:

我们在表 Employee 的 System_id(FK 到表 System)和 Process_id 列上有一个唯一约束 UQ_EMP_PROC_ID。

由于唯一约束异常,我们放弃了这个约束。但是,仍然存在具有相同名称的异常 UQ_EMP_PROC_ID。我们还仔细检查了,约束已被删除。我们还可以看到在同名的唯一约束上创建的索引(未删除)。这可能是问题吗?如果有,为什么?

任何帮助将不胜感激。如果需要任何进一步的信息,请告诉我。

注意:使用 Oracle 11g。

【问题讨论】:

  • 约束名是否存在于user_constraints中
  • 是的。我们已从 user_constraints 中删除。但我们可以在 all_constraints 中看到具有不同所有者的相同约束名称。
  • 它可能是在不同的架构上创建的。约束可以同名但名称不同。检查 all_constraints 中的 Owner 字段
  • 要删除约束,您应该使用ALTER TABLE DROP CONSTRAINT 命令。我很惊讶可以从 USER_CONSTRAINTS 视图中删除,如果那是您实际所做的。分享和享受。
  • @BobJarvis 我们已使用 ALTER TABLE 脚本从 USER_CONSTRAINTS 中删除。但如果它仍然抛出异常,可能的原因是什么? db中不同的owner下存在相同的约束

标签: sql oracle indexing unique-constraint


【解决方案1】:

尝试删除索引并在没有唯一约束的情况下重新创建它。即使约束本身已被删除,索引可能仍会保留它。

这可以在https://docs.oracle.com/cd/B28359_01/server.111/b28310/indexes006.htm“要删除约束关联索引,您必须禁用或删除约束本身。”中看到。

【讨论】:

    猜你喜欢
    • 2012-09-02
    • 2011-09-03
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多