在批量替換資料時,在用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中的被外來鍵關聯欄位資料型別和長度不一致。特別是資料長度,必須要一致。