コンテキスト: ケースとその関連/子オブジェクトの複数のレコードを削除したいと考えています。子オブジェクトには関連オブジェクトがほとんどありません。次のように、4 ~ 5 レベルの階層があります。
- 場合
- - 仕事
- -----子1
- --------子2
-----------子3
関連するオブジェクトには、カスケード削除が false に設定されたマスターと子の関係があります。
現在、バッチでケースを削除する方法は次のとおりです。
- バッチ内のすべてのケースを収集する
- バッチ内のすべてのケースのすべてのタスクを収集します
- バッチ内のすべてのケースのすべての Child1 レコードを収集します
- バッチ内のすべてのケースのすべての Child2 レコードを収集します
- バッチ内のすべてのケースのすべての Child3 レコードを収集します
次に、一括削除を使用して、レコードの各セットをバッチで削除します。利点は、バッチごとに 5 つの削除しかなく、ガバナーの制限に達しないことです。
ただし、このプロセスの欠点は、上記の手順のいずれかで削除中にエラーが発生した場合、トランザクション全体がロールバックされることです。エラーの原因となった削除を取得することはできますが、その特定のケースのみに関連するオブジェクトをロールバックすることはできません。
質問:
- レコードと子レコードの削除を処理するより良い方法はありますか?
- エラーが発生したケースと子レコードのみをロールバックする方法はありますか