차슈의 개발 자국
Trigger 1 본문
trigger accTrigger on Account (before insert, after insert, before update) {
if (Trigger.isInsert) {
if (Trigger.isBefore) {
for(Account acc : Trigger.New) {
acc.Description = 'New description';
}
} else if (Trigger.isAfter) {
for(Account acc: Trigger.new){
Opportunity opp = new Opportunity();
opp.Name = 'Test Opp';
opp.AccountId = acc.Id;
opp.CloseDate = System.today();
opp.StageName = 'Prospecting';
insert opp;
}
}
}
else if (Trigger.isUpdate) {
if(Trigger.isBefore){
Account acc = Trigger.New[0];
Account a = Trigger.Old[0];
if(acc.phone != a.phone){
acc.Description = 'Phone is changed';
}
}
}
}
Before Trigger : 비포 트리거는 같은 object에 대한 로직을 수행하는데 사용된다. 그리고 DML문을 사용할 수가 없다. 이 트리거는 데이터가 데이터베이스에 저장되기 전에 발생한다.
After Trigger : 애프터 트리거는 related objects에 대한 로직을 수행하는데 사용된다. 그리고 이 트리거는 시스템에 의해 생성된 필드 값에 액세스할 수 있다. (Ex: CreatedBy, LasteModifiedBy , Record Id etc..)
Trigger.new : 리스트 반환. insert 와 update triggers에서만 가능.
Trigger.old : 리스트 반환. update 와 delete triggers에서만 가능.
Comments