問題
開発者は、before insertトリガーを作成します。 開発者はトリガー本体のレコードにどのようにアクセスできますか。
- Trigger.newコンテキスト変数にアクセスする
- Trigger.newRecordsコンテキスト変数にアクセスする
- Trigger.newMapコンテキスト変数にアクセスする
- Trigger.newListコンテキスト変数にアクセスする
正解
- Trigger.newコンテキスト変数にアクセスする
- Trigger.newRecordsコンテキスト変数にアクセスする
- Trigger.newMapコンテキスト変数にアクセスする
- Trigger.newListコンテキスト変数にアクセスする
解説
この問題は、Salesforceにおけるトリガーの実装時に、開発者がどのようにしてレコードの情報にアクセスするかに関連しています。正確にレコードのデータにアクセスするためには、トリガーコンテキスト変数の理解が不可欠です。
Trigger.new
、Trigger.newMap
などのトリガーコンテキスト変数は、トリガーが発火した際のレコードの状態やデータを取得するための変数です。それぞれの変数は特定のトリガーのタイプや実行時のタイミング(before、after)で利用可能であり、それらの変数を正しく使用することで、レコードのデータを操作したり、特定のビジネスロジックに従って処理を実行することができます。
この問題を正確に解決するには、Salesforceのトリガーコンテキスト変数の種類と、それぞれの変数が提供するデータ、そしてそれらが使用可能なトリガーのタイプやタイミングを理解している必要があります。
それぞれの選択肢の理由について説明します。
□ Trigger.newコンテキスト変数にアクセスする
これは正解です。Trigger.new
は、before insert
トリガーの実行中に挿入される予定のレコードのリストを表します。この変数は、データベースに保存される前の新規レコードを含むリストを提供し、開発者はこのリストを通じてこれらのレコードに対して処理を行うことができます。
□ Trigger.newRecordsコンテキスト変数にアクセスする
これは不正解です。Salesforceのトリガーコンテキスト変数にTrigger.newRecords
という変数は存在しません。したがって、開発者はこれを使用してレコードにアクセスすることはできません。
□ Trigger.newMapコンテキスト変数にアクセスする
これは不正解です。Trigger.newMap
はレコードのIDをキーとして、それに関連するsObjectレコードを値として持つマップを提供します。しかし、before insert
トリガーのタイミングでは、レコードはまだ挿入されていないため、IDがまだ生成されていません。従って、この変数はbefore insert
トリガーで利用できません。
□ Trigger.newListコンテキスト変数にアクセスする
これは不正解です。Salesforceのトリガーコンテキスト変数にTrigger.newList
という変数は存在しません。したがって、開発者はこれを使用してレコードにアクセスすることはできません。
参考:トリガーコンテキスト変数
コメント