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设定.

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM