02298。00000-“无法验证(%s。%s)-找不到父键”

时间:2018-12-17 12:35:29

标签: sql oracle foreign-keys ddl

步骤1:

我有禁用约束和触发的脚本。这已成功执行。

第2步:

我有截断表的脚本。这也成功执行。

第3步:

但是,当我尝试启用约束并触发时,我的错误越来越少了。

Error report -
ORA-02298: cannot validate (EMPLOYEE.FK_829_EMP_STATUS) - parent keys not found
ORA-06512: at line 6
02298. 00000 - "cannot validate (%s.%s) - parent keys not found"
*Cause:    an alter table validating constraint failed because the table has
           child records.
*Action:   Obvious

1 个答案:

答案 0 :(得分:0)

您要在EMPLOYEE表上启用的约束具有父表中不存在的记录。查看您启用的约束,然后删除孤立的子代,将记录添加回父代,或使用NOVALIDATE子句,以便即使对于孤立的子代也可以启用约束(只知道您有一些违规行为)表格中将显示的“确定”。

要查找有关约束的信息:

select * 
from dba_constraints 
where constraint_name = 'FK_829_EMP_STATUS'

查找“ R_CONSTRAINT_NAME”列,然后:

select * 
from dba_constraints 
where constraint_name = '<r_constraint_name_value_from_above>'

如果需要这些列,可以查询dba_cons_columns where constraint_name = 'xxxx'

无论哪种方式,都将为您提供所涉及的表和列的图片,以便您可以像我之前所说的那样修复数据或使用NOVALIDATE启用。

-吉姆