2017-01-03 14 views
1

アプリケーションでバッチ・ジョブで処理されている巨大なファイルが読み取られました。コード「D」があれば、アカウント・テーブルの行が削除されます。 このアカウントテーブルには、CONSUMER_ID列によってリンクされたコンシューマテーブルとの外部キーFK_ACCOUNT_CONSUMER_IDの関係があります。 削除操作は正しい順序で行われます。これにより、整合性制約違反エラーが発生し、ジョブが失敗することがあります。ORA-02292:整合性制約違反(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)違反 - 子レコード を、あなたは物事のカップルを確認する必要があり

+1

両方のテーブルのDDL、または少なくともPK/FK制約の定義方法を示す必要があります。アカウントにコンシューマテーブルのPKを参照するFKがある場合、その子(アカウント)レコードを削除してもこのエラーは発生しません。後でコンシューマ(おそらく複数のアカウントを持つアカウント)を削除したり、期待していないことをトリガしたり、適切ではないカスケード制約を適用したりしていますか? –

+2

あなたのFK制約 'FK_ACCOUNT_CONSUMER_ID'の定義をチェックすると、それは別のテーブルを指している可能性があります。 – wdosanjos

答えて

0

を見つけ

  1. アカウントテーブルに複数の子行が存在することがあります。
  2. consumer_id外部キーを持つ他のテーブルがあるかもしれません。
関連する問題