Salesforce Tip: Apex Development – Maximum Trigger Depth Exceeded

When you are creating an Apex code that recursively fires triggers due to insert/update/delete statement for more than 16 times. You will get the Maximum Trigger Depth Exceeded error.


The following example will demonstrate this issue:


trigger cloneAnotherAcc on Account (before insert) {
Account acc = new Account(name=’Clone me’);
insert acc;



This trigger will end up in an infinite loop.

In order for you to solve this issue, you can set a condition on insert so it will not be called recursively. Set a flag to manage the insert trigger will be the ideal. To do this, you need to create a new class to keep track the number of times of insert or stop the insert process on second time.


global class triggerCount {
static integer runTimes = 0;

public static integer getRunTimes(){
return runTimes;

public static void setRunTimes(){



Once you successfully create this class, you can implement this triggerCount class on your trigger to limit the number of times for insert.


trigger createAcc on Account (before insert) {

if(triggerCount.getRunTimes < 2){
Account acc= new Account(name=’Clone me’);
insert acc;

Get in touch today to see how we can help you.