Triggers Fundamentals
Trigger Events & Context Variables
What Is a Trigger?
A Trigger is Apex code that runs automatically when a record is inserted, updated, deleted, or restored.
Simple Explanation
A trigger is like a motion sensor—when data changes, the trigger reacts.
Trigger Events (When Triggers Fire)
Common trigger events:
-
before insert -
before update -
after insert -
after update -
before delete -
after delete -
after undelete
Real-Life Example
When a new employee joins, HR automatically creates an ID card.
? New record inserted → trigger runs.
Basic Trigger Syntax
trigger AccountTrigger on Account (before insert, after update) {
// logic here
}
Trigger Context Variables
Context variables tell you what is happening inside the trigger.
| Variable | Meaning |
|---|---|
Trigger.new |
New version of records |
Trigger.old |
Old version of records |
Trigger.isInsert |
Insert event |
Trigger.isUpdate |
Update event |
Trigger.isBefore |
Before trigger |
Trigger.isAfter |
After trigger |
Example Using Context Variables
trigger AccountTrigger on Account (before insert) {
for (Account acc : Trigger.new) {
acc.Name = acc.Name.toUpperCase();
}
}
Gist (Quick Revision)
Triggers run automatically on data changes, and context variables tell you what changed and when.
Before Triggers vs After Triggers
Before Triggers
What Are Before Triggers?
Before triggers run before the record is saved to the database.
When to Use Them
-
Modify field values
-
Validate data
-
Set default values
Real-Life Example
Correct a name spelling before saving it.
Code Example
trigger BeforeAccountTrigger on Account (before insert) {
for (Account acc : Trigger.new) {
acc.Rating = 'Warm';
}
}
After Triggers
What Are After Triggers?
After triggers run after the record is saved.
When to Use Them
-
Create related records
-
Update other objects
-
Perform actions needing record ID
Real-Life Example
After an Order is placed, create an Invoice.
Code Example
trigger AfterAccountTrigger on Account (after insert) {
List<Contact> contacts = new List<Contact>();
for (Account acc : Trigger.new) {
contacts.add(new Contact(
LastName = 'Primary',
AccountId = acc.Id
));
}
insert contacts;
}
Key Differences (Easy to Remember)
| Before Trigger | After Trigger |
|---|---|
| Modify same record | Work with related records |
| No DML needed | DML often required |
| Faster & efficient | Requires record ID |
Gist (Quick Revision)
-
Before triggers → change the same record
-
After triggers → act on related data
