Development questions
Prevent deletion of an Opportunity if its stage is Closed Won.
Use before delete and addError on Trigger.old records.
apex
trigger OppTrigger on Opportunity (before delete) {
for (Opportunity o : Trigger.old) {
if (o.StageName == 'Closed Won') {
o.addError('Closed Won Opportunities cannot be deleted.');
}
}
}
A simpler declarative route is not available for delete, since validation rules don't run on delete, so a trigger (or a restricted profile) is required.
apex-triggertriggercodingscenariovalidation
More Development questions
- What is an Apex Trigger in Salesforce and when should you use it over Flows?
- What is the difference between before triggers and after triggers?
- Explain all Trigger context variables (isInsert, isUpdate, isDelete, isUndelete, isBefore, isAfter, isExecuting, size, operationType).
- What is the difference between Trigger.new and Trigger.old?
- In which trigger events are Trigger.new and Trigger.newMap available?
- In which trigger events are Trigger.old and Trigger.oldMap available?