Обновление запускает 2 объекта рекурсивно в Salesforce - PullRequest
1 голос
/ 29 октября 2011

У меня есть пара объектов (1 пользовательский объект, называемый назначением и объектом события), которые я пытаюсь синхронизировать.Таким образом, у меня есть 1 триггер на каждый объект, который ищет и обновляет записи.Проблема в том, что эти триггеры будут продолжать работать рекурсивно, так как каждый раз, когда обновляется свидание, событие также обновляется, и триггеры продолжают срабатывать, и отдел продаж, конечно, не принимает его.

Спасибо

1 Ответ

2 голосов
/ 31 октября 2011

Самый простой способ - создать класс Apex, содержащий статическую логическую переменную, инициализированную в false.Затем в каждом из ваших триггеров вы будете проверять состояние этой переменной:

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.Конечно, это все еще может вызвать некоторое каскадирование, но оно прекратится, как только вы не вызовете другое обновление в одном из триггеров.

Удачи!

...