我有一个表,该表在6个不同的列上都有UNIQUE INDEX。但是,表中有重复项。当我删除索引并尝试重新创建它时,它会抛出错误,指出存在重复的值。
有没有一种方法可以使重复的行仍然创建唯一索引?
我看到约束有NOVALIDATE选项。索引有类似的东西吗?
我想应该有一种方法,因为表中有重复的行具有有效的UNIQUE INDEX。
请协助。
答案 0 :(得分:2)
即使将索引标记为UNUSABLE,也可以在表上创建UNIQUE索引,即使它具有重复项也是如此。这意味着该索引将存在,但系统无法使用它。为此,请使用类似于
的命令CREATE UNIQUE INDEX UNUSABLE_UNIQUE_IDX_SUCCEEDS
ON TABLE_WITH_DUPS(ID)
UNUSABLE
答案 1 :(得分:0)
好像您不想在多次插入操作期间发生错误ORA-00001 Unique constraint violated
错误,甚至发生违反的情况是,除非,插入的数据已提交。然后,您可以创建唯一键deferrable initially deferred
,例如
alter table tab
drop constraint Ukey [cascade];
alter table tab
add constraint Ukey unique ( col1, col2, ..., col6 )
deferrable initially deferred
以上cascade
选项与删除唯一键有关,即使表选项卡的子表中存在外键也是如此。