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