Вы находитесь на странице: 1из 2

Important Points

Trigger Context Variables

All triggers define implicit variables that allow developers to access run-time context. These variables
are contained in the System.Trigger class.

Variable Usage
isExecuting Returns true if the current context for the Apex code is a trigger, not a Visualforce page,
a Web service, or an executeanonymous() API call.
isInsert Returns true if this trigger was fired due to an insert operation, from the Salesforce user
interface, Apex, or the API.
isUpdate Returns true if this trigger was fired due to an update operation, from the Salesforce user
interface, Apex, or the API.
isDelete Returns true if this trigger was fired due to a delete operation, from the Salesforce user
interface, Apex, or the API.
isBefore Returns true if this trigger was fired before any record was saved.
isAfter Returns true if this trigger was fired after all records were saved.
isUndelete Returns true if this trigger was fired after a record is recovered from the Recycle Bin (that
is, after an undelete operation from the Salesforce user interface, Apex, or the API.)
new Returns a list of the new versions of the sObject records.
Note that this sObject list is only available in insert and update triggers, and the records
can only be modified in before triggers.

newMap A map of IDs to the new versions of the sObject records.


Note that this map is only available in before update, after insert, and after update
triggers.

old Returns a list of the old versions of the sObject records.


Note that this sObject list is only available in update and delete triggers.

oldMap A map of IDs to the old versions of the sObject records.


Note that this map is only available in update and delete triggers.

size The total number of records in a trigger invocation, both old and new.
Important Context Variable Considerations

Be aware of the following considerations for trigger context variables:

1. Trigger.new and trigger.old cannot be used in Apex DML operations.


2. You can use an object to change its own field values using trigger.new, but only in before
triggers. In all after triggers, trigger.new is not saved, so a runtime exception is thrown.
3. Trigger.old is always read-only.
4. You cannot delete trigger.new.

Trigger Can change fields using Can update original object Can delete original object
Event trigger.new using an update DML using a delete DML
operation operation
before Allowed. Not applicable. The original Not applicable. The original
insert object has not been created; object has not been created;
nothing can reference it, so nothing can reference it, so
nothing can update it. nothing can update it.
after Not allowed. A runtime Allowed. Allowed, but unnecessary.
insert error is thrown, as The object is deleted
trigger.new is already immediately after being
saved. inserted.
before Allowed. Not allowed. A runtime error Not allowed. A runtime error
update is thrown. is thrown.
after Not allowed. A runtime Allowed. Even though bad Allowed. The updates are
update error is thrown, as code could cause an infinite saved before the object is
trigger.new is already recursion doing this deleted, so if the object is
saved. incorrectly, the error would be undeleted, the updates
found by the governor limits. become visible.
before Not allowed. A runtime Allowed. The updates are Not allowed. A runtime error
delete error is thrown. saved before the object is is thrown. The deletion is
trigger.new is not deleted, so if the object is already in progress.
available in before undeleted, the updates
delete triggers. become visible.
after Not allowed. A runtime Not applicable. The object has Not applicable. The object
delete error is thrown. already been deleted. has already been deleted.
trigger.new is not
available in after delete
triggers.
after Not allowed. A runtime Allowed. Allowed, but unnecessary.
undelete error is thrown. The object is deleted
trigger.old is not immediately after being
available in after inserted.
undelete triggers.

Вам также может понравиться