S.B.S. Salesforce技術ブログ

教えて921さん!

トリガーの作成をしよう#4~trigger.newとtrigger.oldについて~

こんにちは!mkです!
引き続きトリガについて話していきます!
今回はtrigger.newとtrigger.old
について話していきたいと思います。

trigger.newとtrigger.oldとは


トリガの実行前後で登録されているデータの情報が異なることは何となくわかってもらえるかと思います。
このトリガの実行前後に登録されているデータを取ってくるために使われるのがtrigger.newとtrigger.oldです!
newとoldが指す通り、trigger.newはトリガ実行後のデータ、trigger.oldはトリガ実行前のデータを取ってくるために使われます。
それでは実際にどのように取ってくるのかを見てみましょう!

trigger.newとtrigger.oldの使い方


今回は簡単なサンプルを用意しました!

trigger change on test__c (before insert,before update,before delete) {
    List<test__c> test_new = Trigger.new;
    List<test__c> test_old = Trigger.old;
    System.debug(test_new);
    System.debug(test_old);
}

サンプルのクラスを作成したら早速レコードの作成や更新、削除を行ってみましょう!
これでトリガ実行時にTrigger.newとTrigger.oldの値を取ってくるわけですが、その値は次のようになることが分かると思います。

イベントトリガ Trigger.new Trigger.old
作成 作成した情報 作成前(null)
更新 変更後の情報 変更前の情報
削除 削除した後(null) 削除前の情報

これが分かれば条件文などにTrigger.newやTrigger.oldを利用が出来ると思うのでApexクラスで書ける幅が大きく広がりますよ!

まとめ


今回はTrigger.newとTrigger.oldについて説明しました! Trigger.newとTrigger.oldはトリガの実行前後の値を取ってくるために使用されます!
また、今回や前回のbeforeトリガとafterトリガの話もですが、トリガなどの実行タイミングというのは結構重要で、実行のタイミングが想像していたのと異なるせいで入力規則などに引っかかり、エラーが起きることがあります!
Trigger.newやTrigger.oldを始めとして今後は実行タイミングなども意識しながら使っていけると良いですね!