Trigger.New: Trigger.new returns List of new records which are trying to insert into Database. This is available in Before Insert, Before Update, After Insert, After Update Triggers and undelete Triggers. This list of records can only modified in Before triggers.
Trigger.Old: Trigger.old returns List of old records which are updated with new values. These List of records already there in Database. Trigger.old available in Before update, after update, Before Delete and After Delete triggers.
Before Insert Trigger
Trigger.new- what are the records going to insert into Database [not commited yet, id=null]
Trigger.old- NULL
Trigger.newmap-null
Trigger.oldmap-Null
Afeter Insert
Trigger.new- New List of Records which are inserted
Trigger.old- null
Trigger.NewMap- New Map<ID, new Record>
Trigger.oldMap- Null
Before Update
Trigger.new- New List of Records which are going to be updated
Trigger.old- List of Records with old values.
Trigger.NewMap- New Map<ID, new Record>
Trigger.oldMap- Old Map<ID, old record>
After Update
Trigger.new- New List of Records which are updated
Trigger.old- List of Records with old values.
Trigger.NewMap- New Map<ID, new Record>
Trigger.oldMap- Old Map<ID, old record>
Example
I have a scenario like when Account Phone number is updated then Account Description value should be updated with old phone number+new phone number.
trigger NewVsOld on Account (before update) {
for(integer i=0; i<trigger.new.size();i++){
if(trigger.old[i].phone!=trigger.new[i].phone){
trigger.new[i].description='old phone number is ' + trigger.old[i].phone + ' and New Phone number is ' +trigger.new[i].phone ;
}
}
}