給已有數據的oracle表建立外鍵關系


添加兩張已存在數據的表的關系外鍵時,報如下圖所示的錯誤:

出現這種錯誤,無非是兩張表的關聯字段的名稱、類型、長度等不一致,又或者表中已存在的數據不匹配造成的。

我們可以通過minus關鍵字查詢2張表的差值,確實存在!!!

解決方法有兩種:

(1).刪除多余的數據,保持2張表數據統一,在執行 alter table 表1 add constraint FK_XXX foreign key(字段1)  references 表2 (字段2);就不會報錯了;

(ps:這種方式在實際生產過程中不實際,生產環境數據不能隨便刪除的,所以這種方式不現實,不推薦)

(2).在alter語句之后加上enable novalidate即可,即alter table 表1 add constraint FK_XXX foreign key(字段1)  references 表2 (字段2) enable novalidate;

(ps:enable novalidate指的是允許已有記錄不滿足約束條件,但新增/修改的記錄則必須滿足約束條件)

 

這是其他3種修飾關鍵詞的含義:

Enable Validate與Enable相同,檢查已有記錄和新增記錄,確保都符合約束;

Disable Validate禁用約束,刪除約束上的索引,不允許修改任何被約束的記錄;

Disable Novalidate與Disable相同,禁用約束,刪除約束上的索引,且允許修改被約束的記錄。

 

參考博客鏈接

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM