2013-04-29 43 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