Development questions
Write a trigger to prevent Account deletion if it has one or more related Contacts.
Use before delete and check for child Contacts with a subquery.
apex
trigger AccountTrigger on Account (before delete) {
for (Account a : [SELECT Id, (SELECT Id FROM Contacts LIMIT 1)
FROM Account WHERE Id IN :Trigger.oldMap.keySet()]) {
if (!a.Contacts.isEmpty()) {
Trigger.oldMap.get(a.Id).addError('Cannot delete an Account that has Contacts.');
}
}
}
Use Trigger.old records for addError in delete triggers. Note that a Contact-Account relationship with a master-detail or restricted delete would behave differently.
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?