在更新表的主键字段或DELETE数据时,如果遇到ORA-02292: integrity constraint (xxxx) violated - child record found 这个是因为主外键关系,下面借助一个小列子来描述一下这个错误:

SQL> create table student

  2  (

  3    id  number,

  4    name nvarchar2(12),

  5    constraint pk_student primary key(id) 

  6  );

 

Table created.

QL> create table grades

  2  (  id  number ,

  3     subject nvarchar2(12),

  4     scores number,

  5     constraint pk_grades primary key(id ,subject),

  6     constraint fk_student_id foreign key(id) references student(id)

  7  );

 

Table created.

 

SQL> insert into student

  2  values(1001,'kerry');

 

1 row created.

 

SQL> insert into student

  2  values(1002,'jimmy');

 

1 row created.

 

SQL> commit;

 

Commit complete.

 

SQL> insert into grades

  2  values(1001, 'math', 120);

 

1 row created.

 

SQL> insert into grades

  2  values(1001, 'english', 106);

 

1 row created.

 

SQL> commit;

 

Commit complete.

 

SQL> update student set id=1004 where name='kerry';

update student set id=1004 where name='kerry'

*

ERROR at line 1:

ORA-02292: integrity constraint (TEST.FK_STUDENT_ID) violated - child record

found

 

 

SQL> 

遇到这种情况,首先找到外键约束和相关表,禁用外键约束,处理数据,然后启用外键约束。

SELECT OWNER, CONSTRAINT_NAME, TABLE_NAME 

FROM DBA_CONSTRAINTS 

WHERE CONSTRAINT_NAME=&CONSTRAINT_NAME;

 

SELECT OWNER, CONSTRAINT_NAME, TABLE_NAME 

FROM USER_CONSTRAINTS 

WHERE CONSTRAINT_NAME=&CONSTRAINT_NAME;

 

 

SQL> ALTER TABLE TEST.GRADES DISABLE CONSTRAINT FK_STUDENT_ID;

 

Table altered.

 

SQL> update student set id=1004 where name='kerry';

 

1 row updated.

 

 

SQL> update grades set id=1004 where id =1001;

 

2 rows updated.

 

SQL> commit;

 

Commit complete.

 

SQL> ALTER TABLE TEST.GRADES ENABLE CONSTRAINT FK_STUDENT_ID;

 

Table altered.

 

SQL> 

如果是删除数据遇到这种情况,可以先删除子表数据,然后删除父表数据。

SQL> delete from student where id=1004;

delete from student where id=1004

*

ERROR at line 1:

ORA-02292: integrity constraint (TEST.FK_STUDENT_ID) violated - child record

found

 

 

SQL> delete from grades

  2  where id in

  3  ( select id from student

  4    where id=1004);

 

2 rows deleted.

 

SQL> delete from student where id=1004;

 

1 row deleted.

 

SQL> commit;

 

Commit complete.

 

SQL> 

 

ORA-02292: integrity constraint (xxxx) violated - child record found的更多相关文章

  1. 修复Magento SQLSTATE[23000]: Integrity constraint

    magneto在意外情况下报错Magento SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry,出现这个问题最 ...

  2. 报错:SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'admin' for key 'username'

    在提交注册信息的时候报错:SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'admin' for key ' ...

  3. 关于 Oracle DB CONSTRAINT约束的一些SQL ORA-02292: integrity constraint violated

    ALTER TABLE table_name DISABLE CONSTRAINT constraint_name; select * from all_constraints where owner ...

  4. Oracle数据库出现[23000][2291] ORA-02291: integrity constraint (SIMTH.SYS_C005306) violated异常

    参考链接 这个异常发生在往中间表中插入数据时,这时出现异常是因为关联的某个表没有插入数据,所以给没有插入数据的关联表插入数据,再给中间表插入数据此时异常就会解决.

  5. laravel报错:SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0' for key 'PRIMARY' (SQL: insert into `cart` (`uid`, `gid`, `gname`, `price`) values (3, 21, 夏季日系复古工装短袖衬衫男士印花潮流宽松五分

    原因:要操作的数据表id没有设置自增,导致出现id为0的情况 解决方法:给该数据表的id字段设置自增

  6. SQL基础--> 约束(CONSTRAINT)

    --============================= --SQL基础--> 约束(CONSTRAINT) --============================= 一.几类数据完 ...

  7. SQL Server - 约束 CONSTRAINT

    总结 约束放置在表中,以下五种约束: NOT NULL 非空约束C 指定的列不允许为空值 UNIQUE 唯一约束U 指定的列中没有重复值,或该表中每一个值或者每一组值都将是唯一的 PRIMARY KE ...

  8. constraint、index、view(day04)

    回顾: 1.sql99中的表连接 select 字段列表 from 左表 {[inner]|{left|right|full} [outer]} join 右表 on 关联条件; 集合操作 union ...

  9. ocp 1Z0-042 1-60题解析

    1. Because of a power outage,instance failure has occurred. From what point in the redo log does rec ...

随机推荐

  1. MongoDB的查询操作

    1. 前言 在这篇博文中,我们将学习如何查询mongoDB中的数据.当我们把数据存储在mongoDB以后,我们需要把数据查询出来.毕竟CRUD操作中,查询操作在我们系统中是我们应用比较频繁的操作.我们 ...

  2. ZOJ Problem Set - 1216 Deck

    #include <stdio.h> int main() { ]; double t=2.0; table[]=0.5; ;i<;i++) { t+=; table[i]=tabl ...

  3. C#设置文件权限

    在开发中,我们经常会使用IO操作,例如创建,删除文件等操作.在项目中这样的需求也较多,我们也会经常对这些操作进行编码,但是对文件的权限进行设置,这样的操作可能会手动操作,现在介绍一种采用代码动态对文件 ...

  4. [Java IO]01_File类和RandomAccessFile类

    File类 File类是java.io包中唯一对文件本身进行操作的类.它可以进行创建.删除文件等操作.   File类常用操作 (1)创建文件 可以使用 createNewFille() 创建一个新文 ...

  5. 整数压缩编码 ZigZag

    在分析Avro源码时,发现Avro为了对int.long类型数据压缩,采用Protocol Buffers的ZigZag编码(Thrift也采用了ZigZag来压缩整数). 1. 补码编码 为了便于后 ...

  6. jQuery-1.9.1源码分析系列(十五) 动画处理——外篇

    a.动画兼容Tween.propHooks Tween.propHooks提供特殊情况下设置.获取css特征值的方法,结构如下 Tween.propHooks = { _default: { get: ...

  7. Dapper ORM VS SqlSugar ORM的 8场对决

    CUP和.NET SQL版本不同也会存在少许差距,但不会有质变,下面的测试结果仅供参考 比赛规则 1.统一使用Realse版本的最新 DLL,Realse模式启用程序 2.为了平衡CPU和数据库空闲情 ...

  8. 特性(C#)

    特性(Attribute)是用于在运行时传递程序中各种元素(比如类.方法.结构.枚举.组件等)的行为信息的声明性标签,可以为程序集.类型,以及类型内部的各种成员添加扩展信息,用于表示一些附加信息.您可 ...

  9. webControls与客户端脚本路径

    网上有用的资料不多,在一本电子书中摘抄了内容如下 webControls配置节只有一个clientScriptsLocation属性,此属性用于指定ASP.NET客户端脚本的默认存放路径.这些文件是包 ...

  10. 疯狂Android讲义 - 学习笔记(三)

    Android的事件处理 3.1 Android提供了两套事件处理机制:基于监听的事件处理.基于回调的事件处理. 3.2 基于监听的事件处理 3.2.1 监听的处理模型  主要涉及三类对象:Event ...