
問題
組織内のAccountオブジェクトは、Branchという子オブジェクトと主従関係を持っています。
また、以下の自動化機能が既に設定されています。
・ロールアップサマリーフィールド
・カスタム検証ルール
・重複ルール
開発者はAccountオブジェクトに新しいトリガーを作成しました。
このトリガーをテストする際、どのような点に注意すべきか、2つ選んでください。
A.検証ルールにより、トリガーが再度起動されます。
B.トリガーは、トランザクション中に複数回起動する場合があります。
C.ロールアップサマリーフィールドにより、親レコードが保存を通過する可能性があります。
D.すべてのDML操作がデータベースにコミットされると、重複するルールが実行されます。
正解
A.検証ルールにより、トリガーが再度起動されます。
B.トリガーは、トランザクション中に複数回起動する場合があります。
C.ロールアップサマリーフィールドにより、親レコードが保存を通過する可能性があります。
D.すべてのDML操作がデータベースにコミットされると、重複するルールが実行されます。
解説
A. 不正解 - 検証ルールはトリガーを再度起動しません。検証ルールは、レコードの保存時に評価されますが、トリガーの再起動とは関係ありません。
B. 正解 - トリガーは同じトランザクション中に複数回実行される可能性があります。これは、例えば子オブジェクトの更新や他の操作によって再び呼び出されることがあります。
C. 不正解 - ロールアップサマリーフィールドが親レコードを保存させることはありますが、保存時に親レコードの自動的な通過が保証されるわけではありません。
D. 正解 - 重複ルールはDML操作がデータベースにコミットされる際に実行され、重複チェックが行われます。
ポイント
Accountの新しいトリガーを作るときに注意するのは次の2つ:
B:トリガーは何回も動く可能性がある!
例えば、Branchデータを変更すると、それが原因でトリガーが繰り返し動くことがある。
D:重複ルールは最後に動く!
データが保存されるときに、同じ内容のデータが作られないようにチェックする仕組み。