ORA-02298: 无法验证 (约束)提示未找到父项关键字的解决办法
--在用PL/SQL导入表数据的时候报错ORA-02298:无法验证(PNET.POST_CLOB_FK)-未找到父项关键字
--发现是启用外键约束时报的错 altertableDM_VOLREVenableconstraintVR_VOLID_FK;
/*原因分析:
你要插入的表A里,有外键连接到另一个表B的主键,你在表A的外键列插入的值,在表B的主键列找不到就不能插入。
主要看两表中的数据是否一致,从表中要关联外键的字段中的数据必须包含在主表相关字段的数据内。
处理的方法有:
1>先不验证已有数据的CONSTRANT,加上参数NOVALIDATE.*/ ALTERTABLEPN_POSTADDCONSTRAINTPOST_CLOB_FKFOREIGNKEY(POST_BODY_ID)REFERENCESPN_POST_BODY_CLOB(OBJECT_ID)NOVALIDATE; --2>首先查看两个表对应起来的数据有多少 selectcount(*)fromdm_volrevt,DM_VOLIDkwheret.vr_volid=k.vi_volid; --再分别查看单独的数据,发现外键表多了一行 selectcount(*)fromdm_volrevt; selectcount(*)fromDM_VOLIDk; -找到多的行并删除 selectt.vr_volidfromdm_volrevtwheret.vr_volidnotin(selectk.vi_volidfromDM_VOLIDk); deletefromdm_volrevtwheret.vr_volid=479908; --直接重新执行启用外键的语句,或者删除之前的外键创建新的外键 altertableDM_VOLREVdropconstraintVR_VOLID_FK; ALTERTABLEDM_VOLREVADDCONSTRAINTVR_VOLID_FKforeignKEY(VR_VOLID)referencesDM_VOLID(VI_VOLID)VALIDATE; /*启用约束: enable(validate):启用约束,创建索引,对已有及新加入的数据执行约束. enablenovalidate:启用约束,创建索引,仅对新加入的数据强制执行约束,而不管表中的现有数据. 禁用约束: disable(novalidate):关闭约束,删除索引,可以对约束列的数据进行修改等操作. disablevalidate:关闭约束,删除索引,不能对表进行插入/更新/删除等操作.*/
以上所述是小编给大家介绍的ORA-02298:无法验证(约束)提示未找到父项关键字的解决办法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!