Last Updated on October 17, 2021 by Rakesh Gupta
If you want to populate a field with the count of the number of records in a specific related list on a custom object. Without using roll-up summary field, then this blog post is for you.
I will suggest two triggers. First trigger on the child object (to cause a parent-level trigger), and a second trigger to update the field.
Trigger on Parent Object
trigger OnParent on Child__c (after insert, after update, after delete, after undelete) {
Map<Id,Parent__c> parents = new Map<Id,Parent__c>();
if(Trigger.new<>null)
for(Child__c c:Trigger.new)
if(c.ParentLookup__c<>null)
parents.put(c.ParentLookup__c,new Parent__c(id=c.ParentLookup__c));
if(Trigger.old<>null)
for(Child__c c:Trigger.old)
if(c.ParentLookup__c<>null)
parents.put(c.ParentLookup__c,new Parent__c(id=c.ParentLookup__c));
update parents.values();
}
Trigger on Child Object
trigger Onchild on Parent__c (before insert, before update) {
for(Parent__c p:Trigger.new)
p.RollupCounter__c = 0;
for(Child__c c:[select id,ParentLookup__c from Child__c where ParentLookup__c in :Trigger.new])
Trigger.newMap.get(c.ParentLookup__c).RollupCounter__c++;
}
The child trigger is responsible for making sure that both the old parent and new parent (if there is change) has their values updated accordingly. The parent trigger actually performs the tallying.
Formative Assessment:
I want to hear from you!
What is one thing you learned from this post? How do you envision applying this new knowledge in the real world?
Let me know by Tweeting me at @automationchamp, or find me on LinkedIn.
okay you gave us the apex code, but why not a test class neither?
Now you can use Flow to Count Records in a Related List instead of Apex class.