What Is Recursion In Triggers?
Recursion in Triggers happens when a Trigger is called repeatedly, resulting in an infinite loop.
To counter recursion, we need to:
- Create another class called RecursiveTriggerHandler.
- Make use of “Static” variables.
Example:
trigger BranchTrigger on Branch__c(before update) {
if (RecursiveTriggerHandler.isFirstRun) {
RecursiveTriggerHandler.isFirstRun = false;
// Call Helper Class method
BranchTriggerHelper.firstMethod(Trigger.new);
}
The first instance of the Trigger is run and if this variable is true, the logic in the Helper Class executes.
Other Best Practices for writing triggers:
- Always create only one Trigger per object.
- Create logic-less Triggers and use Helper Class Design Pattern in which the helper class will contain all the logic.
- Create context-specific handler methods in the Helper Class.
- Bifurcate “insert” and “update” Trigger logic contexts and create two different methods in the Trigger’s helper class.
trigger PositonTrigger on Position__c(after insert, after update) {
if (Trigger.isAfter && Trigger.isInsert) {
PositionTriggerHandler.handleAfterInsert(Trigger.new);
} else if (Trigger.isAfter && Trigger.isUpdate) {
PositionTriggerHandler.handleAfterUpdate(Trigger.new, Trigger.old);
}
}
