自学内容网 自学内容网

【Oracle】ORA-02292: integrity constraint

一、问题错误详情:

删除数据时,报了ORA-02292错误

delete from T_HJJC_JCJH_ZXQKGZB where bh = '1712045034213016424960'
> ORA-02292: integrity constraint (U_LIMS_BH_20240619.FK_T_HJJC_JCJH_JCWRY_ZXQKGZB) violated - child record found

二、解决思路

  • 识别相关表和约束、查找依赖关系

    SELECT *
    FROM all_cons_columns acc
    WHERE constraint_name = 'FK_T_HJJC_JCJH_JCWRY_ZXQKGZB' AND OWNER = 'U_LIMS_BH_20240619';
    
  • 检查子记录

    SELECT *
    FROM child_table_name -- 替换为实际的子表名
    WHERE parent_id = '1712045034213016424960'; -- 替换为你要删除的记录的bh值
    
  • 删除子记录 或 临时禁用约束

    1.根据业务需求,决定是否可以直接删除这些子记录,或者先更新它们以解除与父记录的关联
    使用DELETE或UPDATE语句处理这些子记录。
    
    2.禁用约束,即希望保留子表数据
    --禁用约束
    ALTER TABLE child_table_name DISABLE CONSTRAINT FK_T_HJJC_JCJH_JCWRY_ZXQKGZB;
    --删除主表数据
    DELETE FROM T_HJJC_JCJH_ZXQKGZB WHERE bh = '1712045034213016424960';
    --重新开启约束
    ALTER TABLE child_table_name ENABLE CONSTRAINT FK_T_HJJC_JCJH_JCWRY_ZXQKGZB;
    


原文地址:https://blog.csdn.net/xwb602625136/article/details/142339268

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!