ORACLE 忽略已有重复值 创建唯一约束

常有一些特殊情况,需要在表中保留违反唯一约束的数据,一般先drop唯一约束与索引再insert into,这样就需要在表中忽略已有重复值,重建唯一约束

---------------------------------------------------------------------------------------------------

1.创建非唯一索引

CREATE INDEX INDEX_NAME ON TABLE_NAME(XXX);

2.创建唯一约束(disable novalidate)

ALTER TABLE TABLE_NAME ADD CONSTRAINT XXX  UNIQUE (XXX) DISABLE NOVALIDATE;

3.启用唯一约束(enable novalidate)

ALTER TABLE TABLE_NAME ENABLE NOVALIDATE CONSTRAINT XXX  ;

--------------------------------------------------------------------------------------------------

以下对约束的四种状态说明
enable validate :无法输入违反约束的行,而且表中所有行都要符合约束
enable novalidate :表中可以存在不合约束的状态,,但对新加入数据必须符合约束条件.
disable novalidate :可以输入任何数据,表中或已存在不符合约束条件的数据.
disable validate :不能对表进行插入/更新/删除等操作,相当于对整个表的read only设定.

原文地址:https://www.cnblogs.com/linjiao/p/6797098.html