この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Trigger クラス

トリガーの種類、トリガーの操作対象となる sObject レコードのリストなど、トリガーのランタイムコンテキスト情報にアクセスするには、Trigger クラスを使用します。

名前空間

System

トリガーコンテキスト変数

Trigger クラスは次のコンテキスト変数を提供します。
変数 使用方法
isExecuting Apex コードの現在のコンテキストが Visualforce ページ、Web サービス、または executeanonymous() API コールではなく、トリガーである場合、true を返します。
isInsert 挿入操作により、Salesforce ユーザーインターフェース、Apex、または API からこのトリガーが実行された場合に、true を返します。
isUpdate 更新操作により、Salesforce ユーザーインターフェース、Apex、または API からこのトリガーが実行された場合に、true を返します。
isDelete 削除操作により、Salesforce ユーザーインターフェース、Apex、または API からこのトリガーが実行された場合に、true を返します。
isBefore レコードが保存される前にこのトリガーが実行された場合に、true を返します。
isAfter すべてのレコードが保存された後にこのトリガーが実行された場合に、true を返します。
isUndelete レコードがごみ箱から復元された後にこのトリガーが実行された場合に、true を返します。この復元は、Salesforce ユーザーインターフェース、Apex、または API からの復元操作の後にのみ行われます。
new 新しいバージョンの sObject レコードのリストを返します。

この sObject リストは insert トリガー、update トリガー、および undelete トリガーでのみ使用でき、レコードは before トリガーでのみ変更できます。

newMap 新しいバージョンの sObject レコードへの ID の対応付けです。

この対応付けは before update トリガー、after insert トリガー、after update トリガー、および after undelete トリガーでのみ使用できます。

old 古いバージョンの sObject レコードのリストを返します。

この sObject リストは update トリガーと delete トリガーでのみ使用できます。

oldMap 古いバージョンの sObject レコードへの ID の対応付けです。

この対応付けは update トリガーと delete トリガーでのみ使用できます。

operationType 現在の操作に対応する System.TriggerOperation 種別の列挙値を返します。

System.TriggerOperation 列挙の可能な値は次のとおりです。BEFORE_INSERTBEFORE_UPDATEBEFORE_DELETEAFTER_INSERTAFTER_UPDATEAFTER_DELETEAFTER_UNDELETE。トリガーの種類に基づいて、異なるプログラミングロジックを使用する場合は、switch ステートメントを使用して、一意のトリガー実行列挙状態の異なる順列を指定することを検討します。

size 古いバージョンと新しいバージョンの両方を含む、トリガー呼び出しのレコードの合計数。

トリガーを実行するレコードには、無効な項目値が含まれている可能性があります (たとえば、0 で割る数式など)。この場合、項目値は次の変数で null に設定されます。

  • new
  • newMap
  • old
  • oldMap

メモ

たとえば、この単純なトリガーの場合、Trigger.new は sObject のリストであり、for ループで繰り返し実行できます。また、SOQL クエリの IN 句でバインド変数として使用できます。

1Trigger simpleTrigger on Account (after insert) {
2    for (Account a : Trigger.new) {
3        // Iterate over each sObject
4    }
5
6    // This single query finds every contact that is associated with any of the
7    // triggering accounts. Note that although Trigger.new is a collection of  
8    // records, when used as a bind variable in a SOQL query, Apex automatically
9    // transforms the list of records into a list of corresponding Ids.
10    Contact[] cons = [SELECT LastName FROM Contact
11                      WHERE AccountId IN :Trigger.new];
12}

このトリガーでは、Trigger.isBeforeTrigger.isDelete のような Boolean コンテキスト変数を使用して、特定のトリガー条件でのみ実行するコードを定義します。

1trigger myAccountTrigger on Account(before delete, before insert, before update, 
2                                    after delete, after insert, after update) {
3if (Trigger.isBefore) {
4    if (Trigger.isDelete) {
5
6        // In a before delete trigger, the trigger accesses the records that will be
7        // deleted with the Trigger.old list.
8        for (Account a : Trigger.old) {
9            if (a.name != 'okToDelete') {
10                a.addError('You can\'t delete this record!');
11            } 
12        }
13    } else {
14
15    // In before insert or before update triggers, the trigger accesses the new records
16    // with the Trigger.new list.
17        for (Account a : Trigger.new) {
18            if (a.name == 'bad') {
19                a.name.addError('Bad name');
20            }
21    }
22    if (Trigger.isInsert) {
23        for (Account a : Trigger.new) {
24            System.assertEquals('xxx', a.accountNumber); 
25            System.assertEquals('industry', a.industry); 
26            System.assertEquals(100, a.numberofemployees);
27            System.assertEquals(100.0, a.annualrevenue);
28            a.accountNumber = 'yyy';
29        }
30
31// If the trigger is not a before trigger, it must be an after trigger.
32} else {
33    if (Trigger.isInsert) {
34        List<Contact> contacts = new List<Contact>();
35        for (Account a : Trigger.new) {        
36            if(a.Name == 'makeContact') {
37                contacts.add(new Contact (LastName = a.Name,
38                                          AccountId = a.Id));
39            }
40        } 
41      insert contacts;
42    }
43  }
44}}}