【问题标题】:ORACLE - Enable Unique constraint issue (same constraint name, multiple schemas)ORACLE - 启用唯一约束问题(相同的约束名称,多个模式)
【发布时间】:2015-03-12 20:03:04
【问题描述】:

我在尝试重新启用唯一约束时遇到问题。我尝试使用这个命令:

alter table TESTSCHEMA_1.TEST_TABLE1 enable constraint TEST_UNIQUE_CONSTRAINT1;

问题是我有多个模式(比如:TESTSCHEMA_1 到 _5),它们都有同名的表 TEST_TABLE1,这些表也有一个同名的唯一约束 TEST_UNIQUE_CONSTRAINT1。

结果我得到这个错误:

ORA-02299:无法验证 (TESTSCHEMA_1.TEST_UNIQUE_CONSTRAINT1) - 发现重复键

我怎样才能明确指出我想要启用约束的架构?我尝试过使用 TESTSCHEMA_1.TEST_UNIQUE_CONSTRAINT1,但它会引发语法错误(非正确结束的 sql 命令)

【问题讨论】:

  • 要删除现有的重复项吗?
  • 您检查过重复的键吗?错误消息似乎告诉您在 dbms 可以应用唯一约束之前解决重复键。
  • 至于您的最后一个问题,您已经通过将TESTSCHEMA_1 放在表名前面来指定架构。约束将与其父表位于相同的架构中,因此您不需要(也不能)再次指定它。

标签: sql oracle unique-constraint alter-table


【解决方案1】:

检查数据的唯一性。

select unique_column_in_test_table1, count(unique_column_in_test_table1) from TESTSCHEMA_1.TEST_TABLE1
group by unique_column_in_test_table1
having count(unique_column_in_test_table1) > 1

如果此查询返回任何行,您必须处理/更正它以使其唯一。

【讨论】:

  • 我明白了,当我收到错误时,我认为问题是因为多个模式具有具有相同名称的唯一约束,但它位于约束内的数据中。谢谢你:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 2022-01-05
  • 1970-01-01
  • 2014-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多