1

コンテキスト: ケースとその関連/子オブジェクトの複数のレコードを削除したいと考えています。子オブジェクトには関連オブジェクトがほとんどありません。次のように、4 ~ 5 レベルの階層があります。

  • 場合
  • - 仕事
  • -----子1
  • --------子2
  • -----------子3

      関連するオブジェクトには、カスケード削除が false に設定されたマスターと子の関係があります。

現在、バッチでケースを削除する方法は次のとおりです。

  1. バッチ内のすべてのケースを収集する
  2. バッチ内のすべてのケースのすべてのタスクを収集します
  3. バッチ内のすべてのケースのすべての Child1 レコードを収集します
  4. バッチ内のすべてのケースのすべての Child2 レコードを収集します
  5. バッチ内のすべてのケースのすべての Child3 レコードを収集します

次に、一括削除を使用して、レコードの各セットをバッチで削除します。利点は、バッチごとに 5 つの削除しかなく、ガバナーの制限に達しないことです。

ただし、このプロセスの欠点は、上記の手順のいずれかで削除中にエラーが発生した場合、トランザクション全体がロールバックされることです。エラーの原因となった削除を取得することはできますが、その特定のケースのみに関連するオブジェクトをロールバックすることはできません。

質問:

  1. レコードと子レコードの削除を処理するより良い方法はありますか?
  2. エラーが発生したケースと子レコードのみをロールバックする方法はありますか
4

1 に答える 1