在批量替換數據時,在用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中的被外鍵關聯字段數據類型和長度不一致。特別是數據長度,必須要一致。