When we create , update , deleted or undelete any record we get record information in context variable.
Learnings objective
Getting record Id ( any value ) from Trigger.new , Trigger.old, Trigger.newMap , Trigegr.oldMap
How to get values from Trigger context variables
Quick Summery
For developers who are in hurry here is the short summery for you. Go throw the below code snippet to know how to get record Id from different trigger context in salesforce.
// Getting record information from diffrent trigger context
// Trigger.new
if(Trigger.isInsert && Trigger.isAfter) {
for(Account record:Trigger.new) {
System.debug('Id from Trigger.new After Insert '+ record.id);
}
}
// Trigger.old
if(Trigger.isUpdate && Trigger.isAfter) {
for(Account record:Trigger.old) {
System.debug('Id from Trigger.old After Update '+ record.id);
}
}
// Trigger.old after delete
if(Trigger.isDelete && Trigger.isAfter) {
for(Account record:Trigger.old) {
System.debug('Id from Trigger.old After Delete '+ record.id);
}
}
// Trigger.oldMap
if(Trigger.isUpdate && Trigger.isAfter) {
Map oldMap = new Map();
oldMap = Trigger.oldMap;
List accIdLst = [Select Id from Account where Id IN : oldMap.keySet()];
System.debug('Id from Trigger.oldMap after Update ' + accIdLst[0].Id);
}
// Trigger.newMap
if(Trigger.isInsert && Trigger.isAfter) {
Map newMap = new Map();
newMap = Trigger.newMap;
List accIdLst = [Select Id from Account where Id IN : newMap.keySet()];
System.debug('Id from Trigger.newMap after Insert ' + accIdLst[0].Id);
}
Salesforce Trigger Context variables
isExecuting
isInsert
isUpdate
isDelete
isBefore
isAfter
isUndelete
new
newMap
old
oldMap
operationType
size
Let’s find out how to get specific value from Trigger.old , Trigger.old , Trigger.newMap and Trigger.oldMap.
Trigger.new
When we created new record we will get record information in Trigger.new . This code will get executed before the new record get inserted .
Trigger.new on before insert
if(Trigger.isInsert && Trigger.isBefore) {
for(Account record:Trigger.new) {
System.debug('Id From Trigger.new Before Insert '+ record.id);
}
}
Note : record Id is generated once the record is get created successfully. So in case of before insert Id will be null.
Trigger.new on after insert
if(Trigger.isInsert && Trigger.isAfter) {
for(Account record:Trigger.new) {
System.debug('Id From Trigger.new After Insert '+ record.id);
}
}
Trigger.new on before update
if(Trigger.isUpdate && Trigger.isBefore) {
for(Account record:Trigger.new) {
System.debug('Id From Trigger.new Before Update '+ record.id);
}
}
Trigger.new on after update
if(Trigger.isUpdate && Trigger.isAfter) {
for(Account record:Trigger.new) {
System.debug('Id From Trigger.new After Update '+ record.id);
}
}
Trigger.old
Trigger.old on before update
if(Trigger.isUpdate && Trigger.isBefore) {
for(Account record:Trigger.old) {
System.debug('Id From Trigger.old Before Update '+ record.id);
}
}
Trigger.old on after update
if(Trigger.isUpdate && Trigger.isAfter) {
for(Account record:Trigger.old) {
System.debug('Id From Trigger.old After Update '+ record.id);
}
}
Trigger.old on before delete
if(Trigger.isDelete && Trigger.isBefore) {
for(Account record:Trigger.old) {
System.debug('Id From Trigger.old Before Delete '+ record.id);
}
}
Trigger.old on after delete
if(Trigger.isDelete && Trigger.isAfter) {
for(Account record:Trigger.old) {
System.debug('Id From Trigger.old After Delete '+ record.id);
}
}
Trigger.newMap
In trigegr newmap we will get all information of sObject with map of Id’s. Trigger.newMap is only available in before update, after insert, after update and after undelete events.
// Trigger.newMap
if(Trigger.isInsert && Trigger.isAfter) {
Map newMap = new Map();
newMap = Trigger.newMap;
List accIdLst = [Select Id from Account where Id IN : newMap.keySet()];
System.debug('Id from Trigger.newMap after Insert ' + accIdLst[0].Id);
}
Trigger.oldMap
In trigegr oldmap we will get all information of sObject with map of Id’s. Trigger.oldMap is only available in update and delete events.
// Trigger.oldMap
if(Trigger.isUpdate && Trigger.isAfter) {
Map oldMap = new Map();
oldMap = Trigger.oldMap;
List accIdLst = [Select Id from Account where Id IN : oldMap.keySet()];
System.debug('Id from Trigger.oldMap after Update ' + accIdLst[0].Id);
}