2011-10-29 21 views
1

私は同期しようとしているいくつかのオブジェクト(1つのカスタムオブジェクトの予定とイベントオブジェクト)を持っています。だから私は、レコードを検索して更新する各オブジェクトごとに1つのトリガがあります。問題は、これらのトリガーは、予定表が更新されるたびにイベントが更新され、トリガーが継続して実行されるたびに再帰的に実行され続けるため、Salesforceはそれを受け入れないことです。salesforceで再帰的に2つのオブジェクトのトリガーを更新します

これを解決する方法はありますか。

おかげ

答えて

2

最も簡単な方法は、falseに初期化静的なブール変数を含む頂点クラスを持つことです。トリガの一つが実行されるとき、それはこの変数をtrueに設定して、再帰的なトリガーを防ぐだろうと、当然のことながら、結論があること

trigger MyTrigger on MyObject (after update) 
{ 
    if(CStaticTracker.bHasTriggerFired == false) 
    { 
     CStaticTracker.bHasTriggerFired = true; 

     // do your work and update the other object here 

     // shouldn't need this but let's play safe! 
     CStaticTracker.bHasTriggerFired = false; 
    } 
} 

:次に、あなたのトリガのそれぞれに、あなたは、この変数の状態をチェックしますif文に含まれているロジックを実行することを禁止します。もちろん、これでもカスケードが発生する可能性がありますが、トリガーのいずれかで別の更新を呼び出さないとすぐに停止します。

幸運を祈る!

+0

2番目のトリガーでは、CStaticTracker.bHasTriggerFired == falseをチェックする必要がありますか? – Prady

+0

あなたはそれぞれの状態を示すために2つのブール値を使用したいかもしれませんが、あなたのケースでは、両方の 'CStaticTrack.bHasTriggerFired == false'に同じコードを入れて、最初のレコード。 –

関連する問題