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-02291:parent key not found的更多相关文章

  1. Foreign key (referential) constraints on DB2 LUW v105

    oreign key constraints (also known as referential constraints or referential integrity constraints) ...

  2. Oracle Database 11g express edition

    commands : show sys connect sys as sysdba or connect system as sysdba logout or disc clear screen or ...

  3. ocp 1Z0-047 61-130题解析

    61. Evaluate the following SQL statements that are issued in the given order:CREATE TABLE emp(emp_no ...

  4. Oracle Lock(Enqueues)

    转载:http://www.cnblogs.com/Richardzhu/articles/2796540.html 数据库是一个多用户使用的共享资源.当多个用户并发地存取数据时,在数据库中就会产生多 ...

  5. jQuery-template.js学习

    花了点时间,看了下jQuery-template.js,不多废话,先上结构 jQuery.each({..},function(){}) jQuery.fn.extend({..}) jQuery.e ...

  6. CSS3与页面布局学习总结(七)——前端预处理技术(Less、Sass、CoffeeScript、TypeScript)

    CSS不像其它高级语言一样支持算术运算.变量.流程控制与面向对象特性,所以CSS样式较多时会引起一些问题,如修改复杂,冗余,某些别的语言很简单的功能实现不了等.而javascript则是一种半面向对象 ...

  7. 【移动前端开发实践】从无到有(统计、请求、MVC、模块化)H5开发须知

    前言 不知不觉来百度已有半年之久,这半年是996的半年,是孤军奋战的半年,是跌跌撞撞的半年,一个字:真的是累死人啦! 我所进入的团队相当于公司内部创业团队,人员基本全部是新招的,最初开发时连数据库都没 ...

  8. Oracle事务

    Oracle事务的ACID特性 原子性Atomicity:事务中的所有动作要么都发生,要么都不发生. 一致性Consistency:事务将数据库从一种状态转变为下一种一致状态. 隔离性Isolatio ...

  9. CSS3与页面布局学习笔记(七)——前端预处理技术(Less、Sass、CoffeeScript、TypeScript)

    CSS不像其它高级语言一样支持算术运算.变量.流程控制与面向对象特性,所以CSS样式较多时会引起一些问题,如修改复杂,冗余,某些别的语言很简单的功能实现不了等.而javascript则是一种半面向对象 ...

随机推荐

  1. vue-cli2使用cdn方式引入cytoscape

    1. index.html头部引用 <script src="https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.2.19/cytos ...

  2. BZOJ 1197 花仙子的魔法(递推)

    数学归纳法. dp[i][j]=dp[i][j-1]+dp[i-1][j-1]. # include <cstdio> # include <cstring> # includ ...

  3. Trie字典树的学习及理解

    字典树详解见此 我这里学习时主要是看了李煜东的进阶指南里的讲解,以下是书中介绍的内容. Trie,又称字典树,是一种用于实现字符串快速检索的多叉树结构,Tire的每个节点都拥有若干个字符指针,若在插入 ...

  4. Javascript-基础1

    1,变量: name="alex"  #默认是全局变量 var name="eric" #局部变量 2. 写JS代码:---html中写,---临时文件可以写在 ...

  5. Elasticsearch 更新索引settings

    1.更新索引设置:将副本减至0,修改索引分析器为ik_max_word和检索分词器为ik_smart 2.需要先将索引关闭,然后再PUT setings POST user/_close PUT us ...

  6. NOIP 2018 -The Wound-

    "一招不慎,满盘皆输" 如果这个盘是整整一年的OI生涯的话 那么"一招"一定就是NOIP了 Update 2019/4/6 剧变的一年 noip这个成绩意味着我 ...

  7. BZOJ3781:小B的询问——题解

    https://www.luogu.org/problemnew/show/2709 http://www.lydsy.com/JudgeOnline/problem.php?id=3781 题目描述 ...

  8. UVA.10305 Ordering Tasks (拓扑排序)

    UVA.10305 Ordering Tasks 题意分析 详解请移步 算法学习 拓扑排序(TopSort) 拓扑排序的裸题 基本方法是,indegree表示入度表,vector存后继节点.在tops ...

  9. git与svn与github与码云的区别

    1.git与github(https://www.oschina.net/)的区别 Git(https://git-scm.com/)是一个版本控制工具 github是一个用git做版本控制的项目托管 ...

  10. DOM通过ID或NAME获取值

    DOM通过ID或NAME获取值 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> &l ...