ORA-02291: 違反完整約束條件 (*) - 未找到父項關鍵字


在批量替換數據時,在用Oracle中碰到有這種情況,ORA-02291: 違反完整約束條件 (*) - 未找到父項關鍵字。

update pub_user_role
    set role_id = '28cd81675a70b301675a84bafb0002'
  where role_id = '28803c6300be1c01630101b1d9002f';

查看該表的主鍵外鍵顯示:

發現 role_id是外鍵,參照表是pub_roles.  

 

最后排查原因發現符合情況2.

情況場景如下:

表A中有個字段是外鍵,關聯了表B中的某字段,再往表A插入數據時,會出現這種情況。可能原因:

1.在往A表插入時,外鍵關聯的字段在B表中必須有數據,如果B表中沒有數據。

2.產生了外鍵環,就是B表中被外鍵關聯的字段又關聯了C表中的字段,而C中相應字段卻沒有數據,則產生這種情況。

3.如果不是上兩種情況,那么就是一個非常容易疏忽的問題:A中的外鍵字段和B中的被外鍵關聯字段數據類型和長度不一致。特別是數據長度,必須要一致。

 


免責聲明!

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



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