Memos About Salesforce

Salesforceにハマってたこと!

SFDC トリガ動作 積み上げ集計項目の変更で動作される?

salesforceの開発では、

トリガがよく使用される

そして、トリガの動きを制御する仕様が

しっかりしないと、変な動きにつながる

そこで、今回、トリガと積み上げ集計項目について

共有したいと思います。

欲しけりゃくれてやる・・・。

探せ!

この世の全てをそこに置いてきた〜笑

目次

取引先のトリガを例にさせて~

取引先と商談が主従関係の親子である

ER図は下記のリンクから確認できます。

developer.salesforce.com



トリガのサンプルコード
trigger AccountAddressTrigger on Account (after delete, after insert, after undelete,  after update, before delete, before insert, before update) {
    
    if(Trigger.isBefore){
        if(Trigger.isInsert){
            System.debug('■■■ This is BEFORE INSERT action');
        }else if(Trigger.isUpdate){
            System.debug('■■■ This is BEFORE UPDATE action');
        }
    }else if(Trigger.isAfter){
        if(Trigger.isInsert){
            System.debug('■■■ This is AFTER INSERT action');
        }else if(Trigger.isUpdate){
            System.debug('■■■ This is ATER UPDATE action');
        }
    }
}



トリガ動作確認シナリオ



1:取引先に商談に対して、金額の合計を集計する積み上げ集計項目を作成する
2:新規取引先を1件(トリガもちろん動作する、デバッグしません)
3:新規商談を作成し、必要な項目に値を入力する、金額も
3-1:取引先のトリガが動作するか確認(debug)
f:id:jude2016:20180803113032p:plain
3-3:結論
動作します

4:既存商談の【金額】項目を更新する(前後値が違う)
4ー1:取引先のトリガが動作するか確認(debug)
f:id:jude2016:20180803113237p:plain
4-2:結論
動作します

5:既存商談を変更せずに更新かける
5-1:取引先のトリガが動作するか確認(debug)
f:id:jude2016:20180803113553p:plain
5-2:結論
動作しません

まとめ

主従関係の主であるオブジェクトのトリガは

子に対して、集計する項目に値が変更ある際に動作します。