ORA-02298: 无法验证 (约束)提示未找到父项关键字的解决办法

 更新时间:2016年09月21日 10:00:52   作者:Acamy  
这篇文章主要介绍了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如何修改当前的序列值实例详解

    Oracle如何修改当前的序列值实例详解

    很多时候我们都会用到oracle序列,那么我们怎么修改序列的当前值呢?下面这篇文章主要给大家介绍了关于Oracle如何修改当前的序列值的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-05-05
  • Oracle归档日志爆满问题的处理方法

    Oracle归档日志爆满问题的处理方法

    Oracle归档日志(Archivelog)是Oracle数据库的一种特性,它主要用于数据恢复和高可用性的目的,但有什么经常会出现无法连接,手动清除归档日志后可以恢复访问,但是过不了几天依旧会爆满,所以本文给大家介绍了Oracle归档日志爆满问题的处理方法,需要的朋友可以参考下
    2024-10-10
  • Oracle23ai 新特性IF [NOT] EXISTS语法支持的使用

    Oracle23ai 新特性IF [NOT] EXISTS语法支持的使用

    IF [NOT] EXISTS语法用于抑制因给定对象的存在或不存在而引发的潜在错误,允许您编写幂等DDL脚本,本文主要介绍了Oracle23ai 新特性IF [NOT] EXISTS语法支持的使用,感兴趣的可以了解一下
    2024-08-08
  • ORACLE中常用的几种正则表达式小结

    ORACLE中常用的几种正则表达式小结

    相信大家对正则表达式都不陌生,从linux下的命令到Java等编程语言,正则表达式无处不在,下面这篇文章主要给大家介绍了关于ORACLE中常用的几种正则表达式的相关资料,需要的朋友可以参考下
    2022-09-09
  • Oracle建表与创建序列详细实例

    Oracle建表与创建序列详细实例

    在oracle中sequence就是所谓的序列号,每次取的时候它会自动增长,通常用在须要按序列号排序的地方,下面这篇文章主要给大家介绍了关于Oracle建表与创建序列的相关资料,需要的朋友可以参考下
    2023-06-06
  • 深入sql oracle递归查询

    深入sql oracle递归查询

    本篇文章是对sql oracle 递归查询进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • ORACLE应用经验(2)

    ORACLE应用经验(2)

    ORACLE应用经验(2)...
    2007-03-03
  • PL/SQL Developer15和Oracle Instant Client安装配置详细图文教程

    PL/SQL Developer15和Oracle Instant Client安装配置详细图文教程

    PL/SQL Developer是一种集成的开发环境,专门用于开发、测试、调试和优化Oracle PL/SQL存储程序单元,比如触发器等,这篇文章主要给大家介绍了关于PL/SQL Developer15和Oracle Instant Client安装配置的详细图文教程,需要的朋友可以参考下
    2024-04-04
  • ORCAL 临时创建表与删除表

    ORCAL 临时创建表与删除表

    今天这篇文章就来给大家分享ORCAL 临时创建表与删除表的相关资料,如会话级临时表是指临时表中的数据只在会话生命周期之中存在,当用户退出会话结束的时候,Oracle自动清除临时表中数据。下面就跟小编一起进入文章学习起来吧
    2021-10-10
  • oracle使用to_date查询一周的第一天日期

    oracle使用to_date查询一周的第一天日期

    项目的开发中需要用到一个查询一周的第一天日期的函数搜索N久很难找到解决的方法 只要自己写一个先用着 代码如下 a_week格式为 'YYYYIW' 如 '200801'表示2008年的第一周
    2014-01-01

最新评论