問題
ワークフローで、既存のAccountのカスタム項目の値を更新します。開発者は、トリガーによって更新する予定のカスタム項目の値にどのようにアクセスしますか。
- before updateトリガーを記述し、Trigger.newから項目値にアクセスする。
- before insertトリガーを記述し、Trigger.newから項目値にアクセスする。
- after insertトリガーを記述し、Trigger.oldから項目値にアクセスする。
- after updateトリガーを記述し、Trigger.oldから項目値にアクセスする。
正解
- before updateトリガーを記述し、Trigger.newから項目値にアクセスする。
- before insertトリガーを記述し、Trigger.newから項目値にアクセスする。
- after insertトリガーを記述し、Trigger.oldから項目値にアクセスする。
- after updateトリガーを記述し、Trigger.oldから項目値にアクセスする。
解説
問題文の解析:
「ワークフローで、既存のAccountのカスタム項目の値を更新します。開発者は、トリガーによって更新する予定のカスタム項目の値にどのようにアクセスしますか。」から、以下のポイントが重要です。
- 既存のAccountのカスタム項目の値を更新: これは既存のレコードが「更新」されていることを示しています。したがって、このシナリオには
update
トリガーが適切で、insert
トリガー(新しいレコードの挿入のトリガー)は適切でないと判断できます。 - トリガーによって更新する予定のカスタム項目の値にアクセス: これは、トリガーが実行される前に、更新予定の値を取得する必要があることを示しています。このため、
before update
トリガー内でTrigger.new
を使用するのが適切です。
これらのポイントを基に、「before update」の「Trigger.new」を選択する理由を判断できます。
それぞれの選択肢の理由について説明します。
□ before updateトリガーを記述し、Trigger.newから項目値にアクセスする。
これは正解です。before updateトリガーは、レコードが保存される前に実行されます。Trigger.newを使用すると、更新される予定の値にアクセスできます。
□ before insertトリガーを記述し、Trigger.newから項目値にアクセスする。
これは不正解です。before insertトリガーは新規レコードの作成時に使用されるため、既存のレコードの更新には関係ありません。
□ after insertトリガーを記述し、Trigger.oldから項目値にアクセスする。
これは不正解です。after insertトリガーは新規レコードの作成後に実行されるため、既存のレコードの更新には関係ありません。また、Trigger.oldはbefore updateとafter updateトリガーでのみアクセス可能です。
□ after updateトリガーを記述し、Trigger.oldから項目値にアクセスする。
これは不正解です。after updateトリガーは、レコードが保存された後に実行されます。Trigger.oldを使用すると、更新前の古い値にアクセスできますが、更新された新しい値にはアクセスできません。新しい値にアクセスするには、Trigger.newを使用する必要があります。
コメント