Cyclic Trigger Solution:
This example shows how to use trigger properly instead of firing every time by checking some entry criteria.
trigger TriggerWithoutEntryCriteria on Account (after update)
{
for(Account acc : Trigger.New)
{
//Trigger Action Logic
List<Contact> listCon = [Select Fax from Contact where AccountId =: acc.id];
for(Contact con : listCon)
{
con.Fax = acc.Fax;
}
update listCon;
}
} |
trigger TriggerWithEntryCriteria on Account (after update){
Integer index = 0;
for(Account acc : Trigger.New){
//Check entry criteria
if(acc.Fax != Trigger.Old[index].Fax){
List<Contact> listCon = [Select Fax from Contact where AccountId =: acc.id];
for(Contact con:listCon){
con.Fax = acc.Fax;
}
update listCon;
}
index++;
}
} |
Now it is time to take a look at your debug logs and find the dml and soql statements as shown below
25.0 APEX_CODE,DEBUG;APEX_PROFILING,INFO;CALLOUT,INFO;DB,INFO;SYSTEM,DEBUG;VALIDATION,INFO;VISUALFORCE,INFO;WORKFLOW,INFO
20:58:30.106 (106130000)|EXECUTION_STARTED
20:58:30.106 (106172000)|CODE_UNIT_STARTED|[EXTERNAL]|01qE0000000B3a9|TriggerWithoutEntryCriteria on Account trigger event AfterUpdate for [001E000000KBqWz]
20:58:30.107 (107644000)|SYSTEM_METHOD_ENTRY|[4]|LIST<Account>.iterator()
20:58:30.107 (107928000)|SYSTEM_METHOD_EXIT|[4]|LIST<Account>.iterator()
20:58:30.107 (107964000)|SYSTEM_METHOD_ENTRY|[4]|system.ListIterator.hasNext()
20:58:30.107 (107998000)|SYSTEM_METHOD_EXIT|[4]|system.ListIterator.hasNext()
20:58:30.108 (108498000)|SOQL_EXECUTE_BEGIN|[7]|Aggregations:0|select Fax from Contact where AccountId = :tmpVar1
20:58:30.138 (138962000)|SOQL_EXECUTE_END|[7]|Rows:3
20:58:30.139 (139118000)|SYSTEM_METHOD_ENTRY|[8]|LIST<Contact>.iterator()
20:58:30.139 (139269000)|SYSTEM_METHOD_EXIT|[8]|LIST<Contact>.iterator()
20:58:30.139 (139297000)|SYSTEM_METHOD_ENTRY|[8]|system.ListIterator.hasNext()
20:58:30.139 (139315000)|SYSTEM_METHOD_EXIT|[8]|system.ListIterator.hasNext()
20:58:30.139 (139430000)|SYSTEM_METHOD_ENTRY|[8]|system.ListIterator.hasNext()
20:58:30.139 (139447000)|SYSTEM_METHOD_EXIT|[8]|system.ListIterator.hasNext()
20:58:30.139 (139501000)|SYSTEM_METHOD_ENTRY|[8]|system.ListIterator.hasNext()
20:58:30.139 (139517000)|SYSTEM_METHOD_EXIT|[8]|system.ListIterator.hasNext()
20:58:30.139 (139568000)|SYSTEM_METHOD_ENTRY|[8]|system.ListIterator.hasNext()
20:58:30.139 (139590000)|SYSTEM_METHOD_EXIT|[8]|system.ListIterator.hasNext()
20:58:30.139 (139654000)|DML_BEGIN|[12]|Op:Update|Type:Contact|Rows:3
20:58:30.186 (186374000)|DML_END|[12]
20:58:30.186 (186443000)|SYSTEM_METHOD_ENTRY|[4]|system.ListIterator.hasNext()
20:58:30.186 (186461000)|SYSTEM_METHOD_EXIT|[4]|system.ListIterator.hasNext()
20:58:30.193 (186488000)|CUMULATIVE_LIMIT_USAGE
20:58:30.193|LIMIT_USAGE_FOR_NS|(default)|
Number of SOQL queries: 1 out of 100
Number of query rows: 3 out of 50000
Number of SOSL queries: 0 out of 20
Number of DML statements: 1 out of 150
Number of DML rows: 3 out of 10000
Number of script statements: 5 out of 200000
Maximum heap size: 0 out of 6000000
Number of callouts: 0 out of 10
Number of Email Invocations: 0 out of 10
Number of fields describes: 0 out of 100
Number of record type describes: 0 out of 100
Number of child relationships describes: 0 out of 100
Number of picklist describes: 0 out of 100
Number of future calls: 0 out of 10
20:58:30.193|CUMULATIVE_LIMIT_USAGE_END
20:58:30.186 (186541000)|CODE_UNIT_FINISHED|TriggerWithoutEntryCriteria on Account trigger event AfterUpdate for [001E000000KBqWz]
20:58:30.186 (186550000)|EXECUTION_FINISHED
25.0 APEX_CODE,DEBUG;APEX_PROFILING,INFO;CALLOUT,INFO;DB,INFO;SYSTEM,DEBUG;VALIDATION,INFO;VISUALFORCE,INFO;WORKFLOW,INFO
21:11:58.062 (62402000)|EXECUTION_STARTED
21:11:58.062 (62445000)|CODE_UNIT_STARTED|[EXTERNAL]|01qE0000000B3aE|TriggerWithEntryCriteria on Account trigger event AfterUpdate for [001E000000KBqWz]
21:11:58.064 (64002000)|SYSTEM_METHOD_ENTRY|[3]|LIST<Account>.iterator()
21:11:58.064 (64372000)|SYSTEM_METHOD_EXIT|[3]|LIST<Account>.iterator()
21:11:58.064 (64409000)|SYSTEM_METHOD_ENTRY|[3]|system.ListIterator.hasNext()
21:11:58.064 (64450000)|SYSTEM_METHOD_EXIT|[3]|system.ListIterator.hasNext()
21:11:58.064 (64630000)|SYSTEM_METHOD_ENTRY|[3]|system.ListIterator.hasNext()
21:11:58.064 (64647000)|SYSTEM_METHOD_EXIT|[3]|system.ListIterator.hasNext()
21:11:58.154 (64675000)|CUMULATIVE_LIMIT_USAGE
21:11:58.154|LIMIT_USAGE_FOR_NS|(default)|
Number of SOQL queries: 0 out of 100
Number of query rows: 0 out of 50000
Number of SOSL queries: 0 out of 20
Number of DML statements: 0 out of 150
Number of DML rows: 0 out of 10000
Number of script statements: 3 out of 200000
Maximum heap size: 0 out of 6000000
Number of callouts: 0 out of 10
Number of Email Invocations: 0 out of 10
Number of fields describes: 0 out of 100
Number of record type describes: 0 out of 100
Number of child relationships describes: 0 out of 100
Number of picklist describes: 0 out of 100
Number of future calls: 0 out of 10
21:11:58.154|CUMULATIVE_LIMIT_USAGE_END
21:11:58.064 (64736000)|CODE_UNIT_FINISHED|TriggerWithEntryCriteria on Account trigger event AfterUpdate for [001E000000KBqWz]
21:11:58.064 (64745000)|EXECUTION_FINISHED
No comments:
Post a Comment