2012-07-11 99 views
2

這是我第一次使用Oracle。oracle完整性約束

我手動插入東西到DB:

insert into ATTR_TYPE_VALUE (ATTR_TYPE_ID, VALID_VALUE, CREATED_BY) 
(select ATTR_TYPE_ID, 'Ad', 2 from ATTR_TYPE where VALUE = 'ind') 

而且我得到了以下錯誤:

ERROR at line 1: ORA-02291: integrity constraint (LO.ATTR_TYPE_VALUE_FK02) violated - parent key not found

這裏是我發現在研究:

INSERT語句,這個ORA-02291錯誤在你嘗試插入一個沒有匹配父項的子項時很常見,正如外鍵約束定義的那樣。在這種情況下,您需要將父行添加到表中,然後重新插入您的子錶行。

這是否表示ATTR_TYPE表中不存在VALUE='ind'

+0

你想要插入的所有值是什麼?我不確定這是否是正確的語法。提供兩個表的模式。 – 2012-07-11 22:04:29

回答

3

定義哪一列是ATTR_TYPE_VALUE_FK02以及您引用了哪些表和列?

SELECT fk_columns.table_name, 
     fk_columns.column_name, 
     fk_columns.position, 
     pk_columns.table_name, 
     pk_columns.column_name, 
     pk_columns.position 
    FROM all_constraints fk_constraint, 
     all_cons_columns fk_columns, 
     all_cons_columns pk_columns 
WHERE fk_constraint.owner    = 'LO' 
    AND fk_constraint.constraint_name = 'ATTR_TYPE_VALUE_FK02' 
    AND fk_constraint.owner    = fk_columns.owner 
    AND fk_constraint.constraint_name = fk_columns.constraint_name 
    AND fk_constraint.r_owner   = pk_columns.owner 
    AND fk_constraint.r_constraint_name = pk_columns.constraint_name 
+2

這是一個_gasp_隱式連接;)? – Ben 2012-07-11 22:42:35

+3

@Ben - 當你挖掘出你在恐龍漫遊地球時編寫的查詢時,你會得到這樣的結果,並且不支持SQL 99連接語法。 :-) – 2012-07-11 22:44:27

相關問題