Development questions
Why does Trigger.new.size() throw a NullPointerException in a delete trigger while Trigger.size works?
Trigger.size returns the number of records in the current invocation and works in every event. Trigger.new.size() fails with a NullPointerException in delete triggers because Trigger.new is null there (only Trigger.old exists).
So shared logic that must handle delete should use Trigger.size or Trigger.isDelete ? Trigger.old.size() : Trigger.new.size(). In insert, update and undelete both return the same count (maximum 200 per chunk).
apex-triggertriggercontext-variables
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?