Skip to main content

Apex Trigger Development

🔁 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).