【问题标题】:ORA-02292: integrity constraint violated (FK_ACCOUNT_CONSUMER_ID) - child record foundORA-02292: 违反完整性约束 (FK_ACCOUNT_CONSUMER_ID) - 找到子记录
【发布时间】:2017-05-17 23:00:29
【问题描述】:

我的应用程序读取了一个正在批处理作业中处理的大文件,如果它有代码“D”,它会删除帐户表中的行。 此帐户表与由 CONSUMER_ID 列链接的 Consumer 表具有外键 FK_ACCOUNT_CONSUMER_ID 关系。 删除操作的顺序正确,有时这会导致违反完整性约束错误并且作业失败。

非常感谢任何帮助。

BEGIN
    --If action code is D, delete the records
    IF (temp_account_id is not null AND temp_action_code = 'D') THEN
        delete account_tokens at
        where at.account_id = temp_account_id;

        delete account a
        where a.account_id = temp_account_id;
    END IF;

END;

com.batch.framework.BatchJobException:处理时出现 SQLException 数据馈送批次 = 343919。消息 = 无法创建 IDBResultSet 对象:java.sql.SQLIntegrityConstraintViolationException:ORA-02292: 违反完整性约束 (FK_ACCOUNT_CONSUMER_ID) - 子记录 找到了

【问题讨论】:

  • 您需要向我们展示两个表的 DDL,或者至少向我们展示如何定义 PK/FK 约束。如果 account 有一个 FK 引用 consumer 表上的 PK,则删除该子(account)记录不应导致此错误;那么您以后是否还要删除消费者(可能是具有多个帐户的消费者?),或者您是否有触发器做一些您不期望的事情,或者级联约束也不太正确?
  • 检查 FK 约束 FK_ACCOUNT_CONSUMER_ID 的定义,它可能指向另一个表。

标签: sql oracle plsql


【解决方案1】:

您可能需要检查几件事,

  1. 帐户表中可能有多个子行。
  2. 可能还有其他具有 consumer_id 外键的表。

【讨论】:

    猜你喜欢
    • 2019-03-16
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 2012-07-02
    • 2020-04-08
    • 2016-04-13
    • 2019-08-06
    • 2019-12-31
    相关资源
    最近更新 更多