ORA-02291: 違反完整約束條件 - 未找到父項關(guān)鍵字
分類: oracle
2012-01-16 23:43 1122人閱讀 評論(2) 收藏 舉報
總體說說可能出現(xiàn)的原因:
情況場景:
表A中有個字段是外鍵,關(guān)聯(lián)了表B中的某字段,再往表A插入數(shù)據(jù)時,會出現(xiàn)這種情況。
可能原因:
1.
插入的數(shù)據(jù) 如果某個字段是外鍵 那么該值要么為空 要么在主鍵表中 有對應(yīng)的主鍵值 否則 就不滿足參照完整性約束
所以你肯定插入了 不存在的主鍵值 所以產(chǎn)生了這個錯誤
eg.創(chuàng)建A表
創(chuàng)建B表
向A表插入數(shù)據(jù)
向B表插入數(shù)據(jù)
向B 表中插入數(shù)據(jù),B表中某個字段(外鍵)在A表(主表)中沒有值:2沒在主表中
向B 表中插入數(shù)據(jù),B表中某個字段(外鍵),值為空的情況;
2.產(chǎn)生了外鍵環(huán),就是B表中被外鍵關(guān)聯(lián)的字段又關(guān)聯(lián)了C表中的字段,而C中相應(yīng)字段卻沒有數(shù)據(jù),則產(chǎn)生這種情況。
3.如果不是上兩種情況,那么就是一個非常容易疏忽的問題:A中的外鍵字段和B中的被外鍵關(guān)聯(lián)字段數(shù)據(jù)類型和長度不一致。特別是數(shù)據(jù)長度,必須要一致。
第三種情況是最容易忽略的,希望大家注意。