SalesforceのApexトリガで、Updateの場合に、ワークフローによる該当オブジェクトの更新による、Apexトリガが二重で起動することがあります。
それによって、予期せぬ動きが発生する場合があります。
その防止対策として、Apexトリガのハンドラークラスに、static変数を使用して、初回起動かどうかをApexトリガが判断し、二重防止を回避する。
以下はサンプルです。
--- Apexトリガのハンドラクラス ---
public class ApexTriggerHandler {
public static boolean firstRun = true;
}
--- Apexトリガ ---
trigger ApexTestTrigger on TestObject__c (before update) {
if(p.firstRun==true){
system.debug('1回目の起動です。');
ApexTriggerHandler.firstRun=false;
}else{
system.debug('2回目の起動です。');
}
}