Triggers in Salesforce - All You Need to Know
Trigger
A trigger is a piece of code that runs before and after a record in the force.com database is inserted, updated, or deleted. Triggers can be used to bring Apex to life. A trigger is a functional action that occurs in response to specific events. Triggers will occur both before and after records are entered and exited the database. Each occurrence serves as a trigger.
Example1:-
Update All Child Email When Parent Object field Email is updated
Don't forget to check out: Trigger Assignment Rules on Update or Upsert using Data Loader | Salesforce Tutorials
Apex Class Code
public class StudentClass { public static void updateEmailMethod(list<student__c> stulist){ list<Fee__c> feelist = [select id, email__c, student__r.email__c from Fee__c where student__r.id in: stulist]; system.debug('feelist' +feelist); list<fee__c> feeupdate = new list<fee__c>(); for(fee__c f : feelist){ { f.Email__c = f.student__r.email__c; feeupdate.add(f); } } update feeupdate; } }
Trigger Code
trigger mailUpdateOfFee on Student__c (after update) { if(Trigger.isafter && Trigger.isupdate){ StudentClass.updateEmailMethod(Trigger.new); } }
Example 2:-
When Value of Course fee(Custom field ) in Fee Custom Object is summed as.
In Total fee(Custom field) in Student Custom Object.
Check out another amazing blog by Arpit here: Opportunity Line Item | Salesforce Developer Guide
Trigger Code
trigger totalAmount on Fee__c (after insert, after update, after delete) { Set<id> studentIds = new Set<id>(); List<Student__c> StudentsToUpdate = new List<Student__c>(); //if(Trigger.isinsert && Trigger.isafter){ for (Fee__c c : Trigger.new) { studentIds.add(c.Student__c); } if (Trigger.isUpdate || Trigger.isDelete) { for (Fee__c c : Trigger.old) { StudentIds.add(c.Student__c); } } Map<id, Student__c> studentMap = new Map<id, Student__c>([select id, Total_Fees__c from Student__c where id IN :studentIds]); List<AggregateResult> ars = [SELECT Student__c , sum(Course_Fees__c) FROM Fee__c WHERE Student__c IN :studentIds group by Student__c ]; for (AggregateResult ar : ars) { studentMap.get(String.valueOf(ar.get('Student__c'))).Total_Fees__c = Integer.valueOf(ar.get('expr0')); //StudentsToUpdate.add(studentMap.get(String.valueOf(ar.get('Student__c ')))); } update StudentsToUpdate; } }
Responses