我真的很难过这个。我们有一个带有两部分主键的表。这些部分是review_id(来自另一个表的外键)和时间戳。设计这个表的人并没有意识到某些情况可能会导致两个条目具有相同的时间戳,而我得到了" ORA-00001:唯一约束"错误。
但是,由于此表是日志,因此首先不需要主键,因此我删除了主键约束。尽管不再存在这种约束,但我仍然得到同样的错误。
我尝试在PK中添加元素以防止冲突以及恢复约束但禁用它。 Oracle SQL Developer坚持认为数据库反映了我所做的更改,但行为表明它仍在使用原始PK。我认为这可能是一个缓存问题,但即使完全重启我的电脑也无法改变它。
感谢任何建议。
我运行的命令示例:
alter table "DATABASE"."DB_REVIEW_LOG" drop constraint "DB_REVIEW_LOG_PK";
update database.db_review_log set review_id=17494 where review_id = 17495;
这就是我的回忆:
Error starting at line : 2 in command -
update database.db_review_log set review_id=17494 where review_id = 17495
Error report -
SQL Error: ORA-00001: unique constraint (DATABASE.DB_REVIEW_LOG_PK) violated
00001. 00000 - "unique constraint (%s.%s) violated"
*Cause: An UPDATE or INSERT statement attempted to insert a duplicate key.
For Trusted Oracle configured in DBMS MAC mode, you may see
this message if a duplicate entry exists at a different level.
*Action: Either remove the unique restriction or do not insert the key.
答案 0 :(得分:1)
事实证明,尽管它抱怨约束,但问题是一个具有相同名称的唯一索引导致了问题。 谢谢Justin Cave