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

相关文章推荐

Unable to create unique key constraint (ID) on table XXX: ID not found

项目是Spring整合Hibernate的项目,启动时报如下异常: 2017-1-5 10:25:34 org.apache.catalina.core.StandardContext listen...
  • bbc2005
  • bbc2005
  • 2017年01月05日 23:03
  • 393

Cannot delete or update a parent row: a foreign key constraint fails解决方法

我在使用delete from table语句清空一个表数据时,报错 Cannot delete or update a parent row: a foreign key constraint fa...

jbpm4 jbpm4_execution “Cannot delete or update a parent row: a foreign key constraint fails” 异常解决

异常内容: 严重: Could not synchronize database state with session org.hibernate.exception.ConstraintV...

表删除时 Cannot delete or update a parent row: a foreign key constraint fails 异常处理

表删除时 Cannot delete or update a parent row: a foreign key constraint fails 异常处理: 这个错误的原因是表外键关联,级联删除时出...

mysql基础(六) 表删除时,报"Connot delete or update a parent row:a foreign key constraint fails"解决方案二

一、有两张表,结构如下:  t_item: t_bid: id int id ...

unittest RuntimeWarning: Parent module '' not found while handling absolute import

unittest RuntimeWarning: Parent module ” not found while handling absolute import本文部分转载自:pycharm 单元测...
  • yyinhai
  • yyinhai
  • 2016年11月30日 16:50
  • 2384

ORA-19571: archived-log recid 31 stamp 858722423 not found in control file

所有归档日志镜像复制,报错了!!!RMAN> run{allocate channel 3 device type disk; RMAN-00571: =======================...
  • hzdxw
  • hzdxw
  • 2015年01月29日 23:54
  • 1566

无法删除DBLINK ORA-02024 database link not found

Cannot drop a database link after changing the global_name ORA-02024 (Doc ID 382994.1) In thi...

RMAN-06059: expected archived log not found,ORA-19625

RMAN> backup database format='/oracle_rman/%d_%s.dbf' plus archivelog; Starting backup at 31-7月 -1...

删除 Dblink 报错 ORA-02024: database link not found 的解决方法

 朋友说删除DBLINK 报错:ORA-02024: database link not found。 在Metalink上搜到了2篇与这个错误有关的文章:       Cannot drop a d...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ORA-02291: integrity constraint: parent key not found
举报原因:
原因补充:

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