問題
Before Insert
トリガーのTrigger.old
コンテキスト変数の値は何ですか。
- sObjectの空のリスト
- null
- Idなしで新しく作成されたsObjectのリスト
- Undefined
正解
- sObjectの空のリスト
- null
- Idなしで新しく作成されたsObjectのリスト
- Undefined
解説
Before Insert
トリガーにおける Trigger.old
と Trigger.new
のコンテキスト変数について説明します。
- Trigger.new
-
Trigger.new
は、データベースに挿入される前の新しいレコードのリストを参照します。このリストの内容は、Before Insert
トリガー内で変更可能であり、これを利用してデータベースに保存される前にレコードの値を調整することができます。 - Trigger.old
-
Trigger.old
は元のレコードのリストを参照するものですが、Before Insert
のコンテキストでは利用できません。新しいレコードがまだデータベースに存在しないため、”古い” バージョンのレコードは存在しないからです。
それぞれの選択肢の理由について説明します。
□ sObjectの空のリスト
これは不正解です。Trigger.old
は、Before Insert
トリガーのコンテキストで使用される場合、利用できません。その理由は、Trigger.old
が元のレコードのリストを参照するものであるのに対し、Before Insert
の際には新しいレコードがまだデータベースに挿入されていないため、”古い” バージョンのレコードが存在しないからです。
□ null
これは正解です。Before Insert
トリガーのコンテキストでは、Trigger.old
はnullとして返されます。これは、新しく挿入されるレコードはまだ保存されていないため、”古い” バージョンのレコードが存在しないからです。
□ Idなしで新しく作成されたsObjectのリスト
これは不正解です。この説明はTrigger.new
のコンテキスト変数に関するもので、新しく挿入されるレコードのリストを参照します。Before Insert
のコンテキストでは、これらのレコードはまだ保存されていないため、Idはまだ割り当てられていません。
□ Undefined
これは不正解です。Trigger.old
は Before Insert
トリガーのコンテキストではnullとなります。”Undefined” という状態はSalesforceのApex言語には存在しません。
コメント