ORA-02291: integrity constraint: parent key not found

转载 2016年05月31日 16:24:59
hibernate operation: Could not execute JDBC batch update; SQL [insert into 

dchnpricecarchancesource (inpricecard_id, pricecard_id, count, sumcount, source_code, reason_code, 

ingroup_id, op_login, op_groupid, op_time, change_source, memo1, memo2, change_id) values (?, ?, 

?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]; ORA-02291: integrity constraint 

(DBCHNADM.FK_DCHNPRIC_REFERENCE_DCHNPRIC) violated - parent key not found ; nested exception is 

Java.sql.BatchUpdateException: ORA-02291: integrity constraint 

(DBCHNADM.FK_DCHNPRIC_REFERENCE_DCHNPRIC) violated - parent key not found 

---------------------------------------------------------------------------------------------------------------------------

参看了这本书第八章:
《Oracle Database 11g SQL开发指南》<oracle database 11g SQL Master SQL and PL/SQL in the Oracle Database>

8.5.2  外键约束

所谓外键关系就是一个表中的列引用了其他表中的列。例如,products表中的product_type_id列引用了 

product_types表中的product_type_id列。product_types表称为父表(parent table),而products表则称为子

表(child table),这是因为products表中的product_type_id列依赖于product_types表中的product_type_id 

列。

如果试图向products表中插入一行,但此行的product_type_id不存在,数据库就会返回ORA-02291错误。这个错

误说明数据库无法找到一个匹配的父键值(此处父键就是product_types表中的product_type_id列)。在下面这个

例子中,就返回这样一个错误,因为product_types表中不存在product_type_id为6的行:

SQL> INSERT INTO products (
2     product_id, product_type_id, name, description, price
3   ) VALUES (
4    13, 6, 'Test', 'Test', NULL
5   );
INSERT INTO products (
*
ERROR at line 1:
ORA-02291: integrity constraint (STORE.PRODUCTS_FK_PRODUCT_TYPES)
violated - parent key not found

同理,如果试图将products表中一行的product_type_id列设置为一个不存在的父键值,数据库也会返回相同的

错误。例如:

SQL> UPDATE products
2   SET product_type_id = 6
3   WHERE product_id = 1;
UPDATE products
*
ERROR at line 1:
ORA-02291: integrity constraint (STORE.PRODUCTS_FK_PRODUCT_TYPES)
violated - parent key not found

如果试图从父表中删除已经有依赖子行的一行,数据库就会返回ORA-02292错误。例如,如果试图删除

product_types表中 product_type_id列为1的行,数据库就会返回ORA-02292错误,因为products表中包含了

product_type_id列等于1的行:

SQL> DELETE FROM product_types
2   WHERE product_type_id = 1;
DELETE FROM product_types
*
ERROR at line 1:
ORA-02292: integrity constraint (STORE.PRODUCTS_FK_PRODUCT_TYPES)
violated - child record found

如果数据库允许执行这个删除操作,那么子行就无效了,因为它们不能指向父表中的有效值了。

---------------------------------------------------------------------------------------------------------------------

后来发现是在表中外键设置错误造成的,引以为戒:

转自:http://hi.baidu.com/skyforum/blog/item/37611a2e25a8205a4ec2262f.html

ORA-02298 Parent Keys Not Found?解决办法

今天操作oracel数据库时遇到一个问题,在给某张表添加外键时总是出错。提升ORA-02298 Parent Keys Not Found 。找了很多办法都没解决,后来发现原来是在主表中的主键值没有设...
  • abcyyjjkk
  • abcyyjjkk
  • 2016年04月25日 20:09
  • 2081

解决ORA-08102: index key not found

ORA-08102: index key not found, obj# 304067, dba 33580767 (2)oerr ora 810208102, 00000, "index key n...
  • waferleo
  • waferleo
  • 2010年04月14日 17:41
  • 1140

ORA-02291:parent key not found

Hibernate operation: Could not execute JDBC batch update; SQL [insert into dchnpricecarchancesource ...
  • zoucui
  • zoucui
  • 2009年11月23日 18:08
  • 16397

ORA-02292:integrity constraint(xx) violated - child record found 外键关联,无法删除记录

经常我们在删除DB记录时,会为外键关联而无法删除数据感到苦恼。这里个人经常用到的一个方法就是,先让关联主键失效,然后再删除数据,数据删除完成后,再让其主 键生效,这样很好的解决了删除级联数据难的问题...
  • Rocychen
  • Rocychen
  • 2012年07月17日 19:46
  • 6792

常见的SQL错误和解决方法

前言   今天你会看到每个人——从新手到专家——在使用SQL时犯的各种常见错误。你不能永远避免犯任何错误,但是熟悉广泛的错误将帮助你在尽可能短的时间内解决这些错误。   注:在我们的例子中我们使用...
  • u012151556
  • u012151556
  • 2014年04月09日 10:50
  • 686

外键约束ORA-02291错误的原因以及解决方法

ORA-02291: 违反完整约束条件 - 未找到父项关键字 分类: oracle 2012-01-16 23:43 17062人阅读 评论(8) 收藏 举报 c 总体...
  • haiross
  • haiross
  • 2014年03月14日 10:54
  • 6877

ORA-02291: integrity constraint (SYSTEM.FK1170E5C5328E4352) violated 解决办法

在对数据库插入数据是碰到如下错误: ORA-02291: integrity constraint (SYSTEM.FK1170E5C5328E4352) violated 分...
  • huoyin
  • huoyin
  • 2015年08月02日 13:32
  • 1338

ORACLE约束的属性

今天处理了一个由于约束插入数据失败的问题,处理时感到有些吃力,三天不练手生啊。在这里回忆一下。 Oracle数据库Constraint约束的四对属性:Deferrable/not deferrabl...
  • ilovemilk
  • ilovemilk
  • 2012年07月15日 19:58
  • 3956

java开发常见问题总结

Java编程中的一些常见问题汇总 ..本文列举了我在周围同事的Java代码中看到的一些比较典型的错误。显然,静态代码分析(我们团队用的是qulice)不可能发现所有的问题,这也是为什么我要在...
  • bcbobo21cn
  • bcbobo21cn
  • 2016年03月30日 14:13
  • 9667

ORA-02291: integrity constraint (INFORES_GZ_PJ2.FK_TC_DEV_PROPERTY_GRP_PROID) violated - parent key

一.思路1 1.select * from dba_constraints where owner='INFORES_GZ_PJ2' AND CONSTRAINT_NAME='FK_TC_DEV...
  • launch_225
  • launch_225
  • 2012年04月16日 14:38
  • 3252
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ORA-02291: integrity constraint: parent key not found
举报原因:
原因补充:

(最多只允许输入30个字)