每次尝试时,我一直坚持这个问题 - 它出现以下错误:无法验证 - 未找到父 key 。

这是代码( http://i.imgur.com/6JBzTiM.jpg ):

我可以在Employees 表中创建主键并将其分配给EmployeeId。但是当尝试将其添加为 WorkPackages 表中的外键时(使用下面的代码)

ALTER TABLE WORKPACKAGES
ADD FOREIGN KEY (EMPLOYEEID) REFERENCES EMPLOYEES (EMPLOYEEID);

它不断提出验证错误。

我究竟做错了什么?

最佳答案

ALTER TABLE WORKPACKAGES
ADD FOREIGN KEY (EMPLOYEEID) REFERENCES EMPLOYEES (EMPLOYEEID);

强制执行此键时,Oracle 会检查 Workpackages 表中存在的所有 employeeid 是否存在于 Employees 表中。

您的选择:

找到 offending keys by running
SELECT employeeid
FROM   workpackages
WHERE  employeeid NOT IN (SELECT employeeid
                          FROM   employees);

然后将它们插入到员工表中。

另一种选择是使用 NOVALIDATE 以便不检查现有数据,但将验证任何新的插入/更新。有关这方面的演示,请参见 this fiddle

关于oracle - ORA-02298 未找到父 key ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28732053/

10-11 17:34