2011-10-29 43 views
1

我有幾個對象(1個自定義對象稱爲約會和事件對象),我試圖同步。所以我有1個觸發每個對象搜索和更新記錄。問題是,這些觸發器將繼續遞歸運行,因爲每次更新約會時,事件也會更新並且觸發器繼續觸發,而且當然salesforce不接受它。在Salesforce中遞歸地更新2個對象的觸發器

任何想法如何克服這一點?

由於

回答

2

最簡單方法是有一個包含初始化爲假的靜態布爾變量的頂點類。然後在每個觸發器,你會檢查這個變量的狀態:

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; 
    } 
} 

其結果是,當然,當觸發一個運行時,它會將此變量設置爲true,並防止循環觸發從執行if語句中包含的任何邏輯。當然,這可能會導致一些級聯,但只要不在其中一個觸發器中調用另一個更新,它就會停止。

祝你好運!

+0

在第二次觸發我應該檢查CStaticTracker.bHasTriggerFired == false? – Prady

+0

您可能想使用兩個布爾值來指示每個布爾值的狀態,但我認爲在您的情況下,您只需要在'CStaticTrack.bHasTriggerFired == false'中使用相同的代碼,以便第二個代碼不會嘗試更新初始記錄。 –

相關問題