概要
トリガーコンテキスト変数は、SalesforceのApexトリガー内で利用できる特殊な変数であり、トリガーが実行されたときの状況や環境情報を提供します。これにより、データの変更や特定の操作に応じたカスタムロジックを実行する際の情報が得られます。
トリガーコンテキスト変数の種類
- イベントのタイプ:
- isInsert: 新規レコードの挿入時にtrueを返す。
- isUpdate: レコードの更新時にtrueを返す。
- isDelete: レコードの削除時にtrueを返す。
- isUndelete: レコードがゴミ箱から復元された時にtrueを返す。
- イベントのタイミング:
- isBefore: レコードの保存前にtrueを返す。
- isAfter: レコードの保存後にtrueを返す。
- レコードの情報:
- new: 現在のバージョンのsObjectレコードのリスト。
- newMap: 現在のバージョンのsObjectレコードへのIDのマップ。
- old: 以前のバージョンのsObjectレコードのリスト。
- oldMap: 以前のバージョンのsObjectレコードへのIDのマップ。
- その他の情報:
- isExecuting: トリガー内で実行されている場合にtrueを返す。
- operationType: トリガーの操作の種類を示す
System.TriggerOperation
列挙値。 - size: トリガーの実行中のレコードの合計数。
制約に関する詳細とその理由:
トリガーコンテキスト変数のこれらの制約は、Salesforceのオブジェクトとレコードのライフサイクルを理解し、適切なタイミングで正確な情報を取得・操作するためのものです。これにより、データの整合性やトリガーの動作の正確さが保たれます。
- new
- 制約: この変数は、
insert
,update
, およびundelete
トリガーでのみ使用できます。 - 理由:
new
は、現在または変更されたレコードの最新の状態を表します。挿入、更新、および復元操作時にのみ、レコードの新しい状態が関与するため、これらの操作でのみ利用可能です。
- 制約: この変数は、
- newMap
- 制約: このマップは、
before update
,after insert
,after update
, およびafter undelete
トリガーでのみ使用できます。 - 理由: IDをキーとしてレコードの新しい状態を取得するためのマップです。上記の操作の中で、新しいレコードの状態とIDが関与するため、これらの操作に制限されています。
- 制約: このマップは、
- old
- 制約: この変数は、
update
とdelete
トリガーでのみ使用できます。 - 理由:
old
は、変更前のレコードの状態を示します。したがって、更新または削除の際にのみ、元のレコードの状態が関与するため、この制約が存在します。
- 制約: この変数は、
- oldMap
- 制約: このマップは、
update
とdelete
トリガーでのみ使用できます。 - 理由: IDをキーとしてレコードの変更前の状態を取得するためのマップです。更新や削除操作時に、元のレコードの状態とIDが関与するため、この制約が設けられています。
- 制約: このマップは、
- isExecuting
- 制約: この変数は、Visualforceページ、Webサービス、または
executeanonymous()
APIコールのコンテキストではなく、トリガーのコンテキストでのみtrue
を返します。 - 理由: この変数は、Apexコードがトリガーのコンテキストで実行されているかどうかを示すものであり、他のコンテキストでの使用は意味がないためです。
- 制約: この変数は、Visualforceページ、Webサービス、または
- operationType
- 制約: この変数は、現在のトリガー操作を示す
System.TriggerOperation
列挙の値を返します。 - 理由: トリガーの動作やタイミングに基づいて処理を分岐させるためのものであり、具体的なトリガーの動作やタイミングを示すために使用されます。
- 制約: この変数は、現在のトリガー操作を示す
コメント