【Salesforce】triggerについてメモっておきます

先日triggerを開発する機会がありましたが久しぶりすぎていろいろ基本的なことを忘れてしまっていたのでメモしておきます。普通にマニュアルにも出ているような内容ですが。

サンプル

trigger TrgContact on Contact (before insert, before update, after insert, after update) {
    List<Contact> newCnt = Trigger.new;

    List<Contact> oldCnt = Trigger.old;

    if(Trigger.isBefore) {
        //処理前の場合
    }
    
    if(Trigger.isAfter) {
        //処理後の場合
    }
    
    if(Trigger.isInsert) {
        //Insertの場合
    }
    
    if(Trigger.isUpdate) {
        //Updateの場合
    }

    private String getHoge() {
        return 'hoge';
    }
}

イベント、トリガのタイミング

データの更新前か後か、Insert時かUpdate時かは上のサンプルの1行目に指定します。

私が主に使うのはbefore insert, before update, after insert, after updateの4つです。他にdeleteやundeleteもあります。

値の取得

更新処理前の値はTrigger.old、処理後の値はTrigger.newより取得します。Listであることに注意。

分岐

UpdateかInsertか、beforeかafterかによって処理を分岐させる場合はTrigger.isBefore、Trigger.isAfter、Trigger.isInsert、Trigger.isUpdateで判定します。

プライべートメソッドの追加

trigger内にプライベートメソッドを追加したい場合、サンプルのような位置に追加します。