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