2013-04-29 46 views
0

我需要在ADDRESS表中的STAFF表引用ADDRESS_ID中添加兩個約束WORK_ADDRESS_ID和HOME_ADDRESS_ID,但由於以下原因它顯示TABLE操作不成功:ORA-02298:無法驗證(LIP12YJ.STAFF_CON) - 父鑰匙未找到 我該怎麼辦?Oracle外鍵

+1

ADDRESS_ID是ADDRESS中的主鍵嗎? – Liv 2013-04-29 15:44:17

+0

這裏有類似的東西http://stackoverflow.com/questions/4702310/sql-error-ora-02298-cannot-validate-system-aeropuerto-fk-parent-keys-not-f – Noel 2013-04-29 15:44:35

+2

請包括表的DDL,以及生成該錯誤的約束命令。 – 2013-04-29 15:45:40

回答

0

該錯誤表示STAFF表中存在引用ADDRESS_ID但不在ADDRESS表中的數據。不幸的是,從約束名稱來看,問題是否與WORK_ADDRESS_ID列中的數據或HOME_ADDRESS_ID列中的數據不同。但它是很容易的同時檢查

SELECT * 
    FROM staff s 
WHERE NOT EXISTS(SELECT 1 
         FROM address a 
        WHERE a.address_id = s.work_address_id) 

會告訴你所有的STAFF表中有一個WORK_ADDRESS_ID不會在ADDRESS表中存在的行。同樣,

SELECT * 
    FROM staff s 
WHERE NOT EXISTS(SELECT 1 
         FROM address a 
        WHERE a.address_id = s.home_address_id) 

會告訴你在STAFF表中的所有行有一個HOME_ADDRESS_ID不會在ADDRESS表中存在。

+0

是的,非常感謝! – user2332706 2013-04-29 21:10:43