Understanding Trigger Events in Salesforce Apex
In Salesforce, triggers are Apex scripts that run before or after specific data manipulation language (DML) events occur on sObjects. Knowing the available trigger events is critical for building robust, efficient business logic. Below is a concise yet comprehensive guide to all standard trigger events and when to use them.
Before Events
Before triggers run prior to saving a record to the database. Use them mainly to validate or modify the incoming record values without performing additional DML.
before insert
Runs before a new record is inserted. Ideal for setting default values, performing calculations, or validating fields.
before update
Runs before an existing record is updated. Useful for modifying fields or preventing specific updates.
before delete
Runs before a record is deleted. Use it to block deletions or perform cleanup logic related to the record.
After Events
After triggers run after a record has been saved to the database. They’re suitable for operations that require the record ID or rely on committed data.
after insert
Runs after a new record is inserted. Use it to create related records, call external services, or enqueue asynchronous processes.
after update
Runs after an existing record is updated. Ideal for syncing changes to related objects or logging updates.
after delete
Runs after a record is deleted. Useful for removing related child records or cleaning up external references.
after undelete
Runs after a record is recovered from the Recycle Bin. Use it to restore related child records or re-establish external links.
Key Considerations
– Use before
triggers to change values on the record being saved without extra DML operations.
– Use after
triggers when you need record IDs, related records, or the transaction to be committed first.
– Avoid performing DML on the same record in before
triggers to prevent recursion and governor limit issues.
– Leverage Trigger.new, Trigger.old, Trigger.newMap, and Trigger.oldMap to access record state appropriately across different events.
Example: Basic Trigger Structure
trigger AccountTrigger on Account (before insert, before update, after insert, after update, after delete, after undelete, before delete) {
if (Trigger.isBefore) {
if (Trigger.isInsert) {
// before insert logic
} else if (Trigger.isUpdate) {
// before update logic
} else if (Trigger.isDelete) {
// before delete logic
}
} else if (Trigger.isAfter) {
if (Trigger.isInsert) {
// after insert logic
} else if (Trigger.isUpdate) {
// after update logic
} else if (Trigger.isDelete) {
// after delete logic
} else if (Trigger.isUndelete) {
// after undelete logic
}
}
}
Understanding and correctly using trigger events helps maintain data integrity and ensures efficient Apex code that respects Salesforce governor limits.
Leave a Reply