ORA-02298未找到父密钥?

Rob*_*wry 3 oracle sqlplus

每次尝试时我都被困在这个年代 - 它出现了以下错误:无法验证 - 未找到父键.

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

http://i.imgur.com/6JBzTiM.jpg

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

ALTER TABLE WORKPACKAGES
ADD FOREIGN KEY (EMPLOYEEID) REFERENCES EMPLOYEES (EMPLOYEEID);
Run Code Online (Sandbox Code Playgroud)

它不断提出验证错误.

我究竟做错了什么?

Sat*_*hat 19

ALTER TABLE WORKPACKAGES
ADD FOREIGN KEY (EMPLOYEEID) REFERENCES EMPLOYEES (EMPLOYEEID);
Run Code Online (Sandbox Code Playgroud)

强制执行此密钥时,Oracle会检查Workcages表中存在的所有employeeid是否存在于Employees表中.

你的选择:

通过运行找到有问题的密钥

SELECT employeeid
FROM   workpackages
WHERE  employeeid NOT IN (SELECT employeeid
                          FROM   employees); 
Run Code Online (Sandbox Code Playgroud)

然后将它们插入到employee表中.

另一种选择是使用NOVALIDATE以便不检查现有数据,但将验证任何新的插入/更新.请看这个小提琴演示.