トリガと Merge ステートメント
マージイベントでは、独自のトリガイベントは実行されません。その代わりに、delete イベントと update イベントが実行されます。
- 無効となるレコードの削除
- 1 回のマージ操作により、そのマージ削除されるすべてのレコードに対して 1 つの delete イベントが実行されます。マージ操作の結果として削除されたレコードを判別するには、Trigger.old の MasterRecordId 項目を使用します。マージ操作によりレコード削除されると、そのレコードの MasterRecordId 項目には、保持されるレコードの ID が設定されます。MasterRecordId 項目は after delete トリガイベントでのみ設定されます。アプリケーションで、マージの結果削除されたレコードに特別な処理が必要な場合、after delete トリガイベントを使用する必要があります。
- 保持されるレコードの更新
- 1 回のマージ操作により、保持されるレコードに対してのみ 1 つの更新イベントが実行されます。マージ操作の結果、親が変更される子レコードではトリガは実行されません。
たとえば、2 人の取引先責任者がマージされる場合、取引先責任者の削除トリガと更新トリガのみが実行されます。取引先責任者に関連する取引先や商談などのレコードのトリガは実行されません。
マージが行われる場合、次の順にイベントが発生します。
- before delete トリガが実行されます。
- マージによって無効となるレコードが削除され、新しい親レコードが子レコードに割り当てられ、削除されたレコードの MasterRecordId 項目が設定されます。
- after delete トリガが実行されます。
- マスタレコードに必要な特定の更新を実行します。通常の更新トリガが適用されます。