有人可以帮我吗?
id | Name
--------
1 | aaa
2 | bbb
3 | aaa
>alter table arc add CONSTRAINT uk_arc UNIQUE (NAME) novalidate
error :ora-02299: cannot validate( .uk_arc ) - duplicate keys found
我使用novalidate忽略旧副本并开始重新验证。
答案 0 :(得分:9)
如果我找到了正确的答案,您希望Oracle忽略旧的重复值并仅在满足约束时允许新值。返回错误是因为当您添加UNIQUE
约束时,Oracle会在列上创建唯一索引来检查值,但是您的表已经有重复值,因此它会失败。我首先创建非唯一索引,然后添加约束,以便它使用您现有的非唯一索引,而不是自动创建失败的唯一索引:
create index arc_ix on arc (name);
alter table arc add constraint arc_uq unique (name) enable novalidate;