この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Newer Version Available

This content describes an older version of this product. View Latest

一括 DML 例外処理

一括 DML コールによって発生する例外 (コールの直接的な結果によって実行されるトリガ内の再帰的 DML 操作を含む) は、コールの発生元ごとに異なる処理がされます。
  • Apex DML ステートメントから直接発生した一括 DML コールが原因でエラーが発生した場合、または、データベース DML メソッドの all_or_none パラメータが True として指定されている場合、ランタイムエンジンは「オールオ��ナッシング」ルールに従います。つまり、1 回の操作の間、すべてのレコードを正常に更新するか、または操作全体を DML ステートメントのすぐ前の時点にロールバックする必要があります。
  • SOAP API から発生した一括 DML コールが原因でエラーが発生した場合、ランタイムエンジンは少なくとも部分的な保存を試みます。
    1. 最初の試行で、ランタイムエンジンはすべてのレコードを処理します。入力規則や独自のインデックス違反などの問題によるエラーを生成したレコードは、除外されます。
    2. 最初の試行にエラーがあった場合、ランタイムエンジンは、エラーを生成しなかったレコードのみを含む 2 回目の試行を行います。最初の試行でエラーを生成しなかったすべてのレコードが処理され、競合の条件などが理由でエラーを生成したレコードがあれば、それも除外されます。
    3. 2 回目の試行中に追加エラーがあった場合、ランタイムエンジンは、初回と 2 回目にエラーを生成しなかったレコードのみを含む 3 回目と最後の試行を行います。エラーを生成したレコードがある場合、操作全体は失敗し、エラーメッセージ「Too many batch retries in the presence of Apex triggers and partial failures (Apex トリガと部分的な失敗がある場合にバッチ試行の回数が多すぎます)」が表示されます。

    2 回目と 3 回目の試行中、ガバナ制限は、最初の試行前の元の状態にリセットされます。実行ガバナと制限についてを参照してください。

    メモ