🔁 Apex Trigger Development (Before & After Events)
Triggers in Apex are used to perform custom actions before or after changes are made to Salesforce records (like insert, update, delete). They are event-driven and can be used for data validation, automation, or calling Apex logic.
📌 Trigger Syntax
General Syntax
trigger TriggerName on ObjectName (trigger_events) {
// Trigger logic
}
⚙️ Before vs After Triggers
Trigger Type | When it Executes | Use Case |
---|---|---|
Before | Before record is saved to DB | Validation, setting default values |
After | After record is saved to DB | Create related records, send emails, access Record ID |
1️⃣ Before Insert Example
Set a default value before the record is saved.
Trigger: Before Insert
trigger ContactDefaultTitle on Contact (before insert) {
for(Contact c : Trigger.new) {
if(c.Title == null) {
c.Title = 'Not Provided';
}
}
}
2️⃣ After Insert Example
Log record creation using another object, once the ID is generated.
Trigger: After Insert
trigger LogAccountCreation on Account (after insert) {
List notes = new List();
for(Account acc : Trigger.new) {
notes.add(new Note(
Title = 'Account Created',
Body = 'Account ' + acc.Name + ' was created.',
ParentId = acc.Id
));
}
insert notes;
}
🧠 Trigger Context Variables
Trigger.new
– New version of the records (for insert/update)Trigger.old
– Old version of the records (for update/delete)Trigger.isInsert
,isUpdate
,isDelete
Trigger.isBefore
,isAfter
📋 All Trigger Events
Event | Before | After |
---|---|---|
Insert | ✅ | ✅ |
Update | ✅ | ✅ |
Delete | ✅ | ✅ |
Undelete | ❌ | ✅ |
✅ Best Practices
- Use before triggers to modify record fields.
- Use after triggers to create related records or use IDs.
- Avoid DML inside loops – always bulkify!
- Delegate logic to Apex classes (use a trigger handler pattern).