Loading

ワークフローとトリガーを同時に使用する際トリガーを 2 回起動しない方法はありますか?

公開日: May 25, 2026
説明

ある項目を更新し、メール送信・項目更新はワークフローで実施し、ToDo 作成をトリガーで実施するとトリガーが 2 回起動してしまう。トリガーに処理を寄せる以外に回避策はありますか?

解決策

専用の Static field を持つクラスを使用し、トリガーを初回起動かどうかを判定することで、上記現象を回避することができます。

※ 
Salesforce の Static field はリクエストスコープの中だけで共有され、サーバー全体、または全体組織で共有されません。
このことから Static field の値を利用して、トリガーの初回の発動か否かを判断することが可能です。


下記ドキュメントに、トリガーを初回起動かどうかを判定するサンプルが紹介されていますので、参照してください。
静的メソッドとインスタンスメソッド、変数、初期化コード


サンプルコード
--- Apex クラス ---
public class p {
public static boolean firstRun = true;
}

--- Apex トリガー ---
trigger Trigger_001 on Test__c (before update) {
if(p.firstRun==true){
system.debug('1回目の起動です。');
p.firstRun=false;
}
else{
system.debug('2回目の起動です。');
}
}

ナレッジ記事番号

000385321

 
読み込み中
Salesforce Help | Article