ORA-02298: 无法验证 (约束)提示未找到父项关键字的解决办法
--在用PL/SQL导入表数据的时候报错 ORA-02298: 无法验证 (PNET.POST_CLOB_FK) - 未找到父项关键字
--发现是启用外键约束时报的错 alter table DM_VOLREV enable constraint VR_VOLID_FK;
/*原因分析:
你要插入的表A里,有外键连接到另一个表B的主键,你在表A的外键列插入的值,在表B的主键列找不到就不能插入。
主要看两表中的数据是否一致,从表中要关联外键的字段中的数据必须包含在主表相关字段的数据内。
处理的方法有:
1> 先不验证已有数据的CONSTRANT,加上参数NOVALIDATE.*/ ALTER TABLE PN_POST ADD CONSTRAINT POST_CLOB_FK FOREIGN KEY (POST_BODY_ID) REFERENCES PN_POST_BODY_CLOB (OBJECT_ID) NOVALIDATE; --2>首先查看两个表对应起来的数据有多少 select count(*) from dm_volrev t,DM_VOLID k where t.vr_volid = k.vi_volid; --再分别查看单独的数据,发现外键表多了一行 select count(*) from dm_volrev t; select count(*) from DM_VOLID k; -找到多的行并删除 select t.vr_volid from dm_volrev t where t.vr_volid not in (select k.vi_volid from DM_VOLID k); delete from dm_volrev t where t.vr_volid = 479908; --直接重新执行启用外键的语句,或者删除之前的外键创建新的外键 alter table DM_VOLREV drop constraint VR_VOLID_FK; ALTER TABLE DM_VOLREV ADD CONSTRAINT VR_VOLID_FK foreign KEY (VR_VOLID) references DM_VOLID(VI_VOLID) VALIDATE; /*启用约束: enable( validate) :启用约束,创建索引,对已有及新加入的数据执行约束. enable novalidate :启用约束,创建索引,仅对新加入的数据强制执行约束,而不管表中的现有数据. 禁用约束: disable( novalidate):关闭约束,删除索引,可以对约束列的数据进行修改等操作. disable validate :关闭约束,删除索引,不能对表进行 插入/更新/删除等操作.*/
以上所述是小编给大家介绍的ORA-02298: 无法验证 (约束)提示未找到父项关键字的解决办法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
相关文章
Oracle 要慌了!华为终于开源了自家的 Huawei JDK——毕昇 JDK!
毕昇 JDK 是华为内部 OpenJDK 定制版 Huawei JDK 的开源版本,是一个高性能、可用于生产环境的 OpenJDK 发行版,感兴趣的朋友跟随小编一起看看吧2020-12-12在Spring中用select last_insert_id()时遇到问题
一直使用的Oracle数据库,通过序列来实现自增字段,插入之前就已经获得了自增id,保存下来即可在后来的操作中使用2009-05-05ORA-01578、ORA-01110:数据块被损坏,此时无法读取文件问题修复方案
这篇文章主要给大家介绍了关于ORA-01578、ORA-01110:数据块被损坏,此时无法读取文件问题的修复方案,文中通过示例代码介绍的非常详细,对大家学习或者使用数据库具有一定的参考学习价值,需要的朋友可以参考下2024-03-03Oracle中的INSTR,NVL和SUBSTR函数的用法详解
这篇文章主要介绍了Oracle中的INSTR,NVL和SUBSTR函数的用法详解,需要的朋友可以参考下2017-02-02
最新评论