• Oracle报错:ORA-02292: 违反完整约束条件 - 已找到子记录问题解决


    目录

    一、问题详情

    二、原因分析

    三、解决方案


    一、问题详情

    使用Mybatis删除数据的时候,报了如下错误详情:

    org.springframework.dao.DataIntegrityViolationException: 
    ### Error updating database.  Cause: java.sql.SQLException: ORA-02292: 违反完整约束条件 (TEST.FK_TEST_FUE) - 已找到子记录

    ### The error may exist in com/example/project/test/mapper/TestMapper.java (best guess)
    ### The error may involve defaultParameterMap
    ### The error occurred while setting parameters
    ### SQL: DELETE FROM test WHERE id IN (     ?    )
    ### Cause: java.sql.SQLException: ORA-02292: 违反完整约束条件 (TEST.FK_TEST_FUE) - 已找到子记录

    ; ORA-02292: 违反完整约束条件 (TEST.FK_TEST_FUE) - 已找到子记录
    ; nested exception is java.sql.SQLException: ORA-02292: 违反完整约束条件 (TEST.FK_TEST_FUE) - 已找到子记录

       at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:251)
       at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70)
       at 

    二、原因分析

    这个错误是因为在删除数据时,被删除的数据行存在其他表的外键约束关联,即已存在子记录。在数据库设计中,外键约束(FK_TEST_FUE)要求在删除父表数据之前先删除所有相关的子表数据,否则会触发这个异常。

    三、解决方案

    先删除外键约束所在的表数据,再删除主表数据就解决了,可以先根据以下SQL查询:

    1. SELECT
    2. a.constraint_name,
    3. a.table_name,
    4. b.constraint_name
    5. FROM
    6. user_constraints a,
    7. user_constraints b
    8. WHERE
    9. a.constraint_type = 'R'
    10. AND b.constraint_type = 'P'
    11. AND a.r_constraint_name = b.constraint_name
    12. AND a.constraint_name = 'FK_TEST_FUE';

    这样我们就可以查询出:外键约束的名称(a.constraint_name)、外键约束所在的表名(a.table_name)、以及相关的主键约束的名称(b.constraint_name)。

    获取到a.table_name的表名,通过父表的主键去删除a.table_name表中的子数据即可。

  • 相关阅读:
    WEB安全基础 - - -Linux反弹shell
    【SpringMVC源码三千问】@RequstMapping和RequestCondition
    Python计算两个时间的时间差(工作笔记需要自取)
    win10的快捷键&GPU
    推介会如何做好媒体宣传
    请你设计一个LRU(最近最少使用)缓存约束的数据结构
    高校教务系统登录页面JS分析——巢湖学院
    centos 安装ffmpeg
    思维模型 棘轮效应
    算法刷题第二天:双指针--1
  • 原文地址:https://blog.csdn.net/HJW_233/article/details/139807254