1. 程式人生 > >ORA-02291: 違反完整約束條件 - 未找到父項關鍵字

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

name 滿足 repl 插入數據 ext oracl reply details 註意

由於大意,在設置數據庫表時將外鍵字段的類型與外鍵表的主鍵字段類型不一致,造成此錯誤。

我的情況是:

1、將一個為number(10)的外鍵設置成了number(19)

2、將外鍵字段對應的主鍵表設置成了另外的一張表(大意)


關於oracle出現ORA-02291: 違反完整約束條件 - 未找到父項關鍵字錯誤的幾種情況。轉載至:ORA-02291: 違反完整約束條件 - 未找到父項關鍵字

以下是信息留存:


總體說說可能出現的原因:

情況場景:

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

可能原因:

1.

插入的數據<strong>如果某個字段是外鍵 那麽該值要麽為空 要麽在主鍵表中 有對應的主鍵值</strong>否則 就不滿足參照完整性約束

所以你肯定插入了 不存在的主鍵值 所以產生了這個錯誤
 

eg.創建A表

技術分享

創建B表

技術分享

向A表插入數據

技術分享

向B表插入數據

技術分享

向B 表中插入數據,B表中某個字段(外鍵)在A表(主表)中沒有值:2沒在主表中

技術分享

向B 表中插入數據,B表中某個字段(外鍵),值為空的情況;

技術分享

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

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

第三種情況是最容易忽略的,希望大家註意。

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