【发布时间】: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的定义,它可能指向另一个表。