차슈의 개발 자국

Trigger 1 본문

코드 리뷰

Trigger 1

차슈 2021. 12. 17. 17:14

 

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