問題
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言語には存在しません。
次の問題へ

前の問題へ

1問目から復習する


コメント