- Salesforce record에 대한 이벤트 전 후에 INSERT, UPDATE, DELETE와 같은 작업을 수행한다.
- 레코드 관리를 위한 트리거다
- 보통 포인트 앤 클릭만으로 수행할 수 없는 작업을 수행한다.
- 최상위 Object, Custom Object, 기본 하위 Object를 대상으로 함
트리거의 기본 모양
trigger *TriggerName* on *ObjectName*(*trigger_events*){ code_block }
trigger_events 종류
before insert | after insert | after undelete |
before update | after update | |
before delete | after delete |
Before Trigger → DB저장 전 레코드 업데이트나 유효성 검사
After Trigger → Read only. 주로 record Id나 LastModifiedDate field
Context Variables 사용
- 트리거를 발생 시킨 레코드에 Access시 사용한다.
Trigger.New
- insert하거나 update된 trigger에 삽입된 거 전부
- 하나 혹은 여러개의 record를 가져온다. 각각의 sObject를 가져옴.
Trigger.Old
- update trigger에서는 update 되기 이전 버전의 sObject 목록을 가져옴
- delete trigger에서는 delete 되기 이전 버전의 sObject 목록을 가져옴.
Context Variables 종류
종류 | 내용 |
isExecuting | visualforce페이지, Web Service가 아닌 trigger일 때, return true executeanonymous() API call |
isInsert | Salesforce 사용자 인터페이스, APEX, API 로 삽입시 trigger 실행시 true |
isUpdate | Salesforce 사용자 인터페이스, APEX, API 로 업데이트시 trigger 실행시 true |
isDelete | Salesforce 사용자 인터페이스, APEX, API 로 삭제시 trigger 실행시 true |
isBefore | 레코드 저장 전 trigger 실행 |
isAfter | 레코드 저장 후 trigger실행 |
isUndelete | 휴지통에서 record 복원시 true. 마찬가지 salesforce 사용자 인터페이스, APEX, API로 복원 실행시 true |
new | sObject 레코드의 새 버젼 목록 반환 새 List는 insert, update, undelete trigger만 가능! before trigger로만 수정 |
newMap | sObject의 새 버젼에 대한 ID맵 before update, after insert, after update, aftert undelete에서만 가능 |
old | sObject 레코드의 old 버젼 목록 반환 update, delete trigger만 가능 |
oldMap | sObject레코드의 old 버전 ID맵 update, delete trigger만 가능 |
operationType | System.TriggerOpporation 나열 |
size | Trigger로 호출된 Old&New 레코드의 총 개수 |
CallOut
- 외부 서비스에 대한 APEX 호출
- 외부 서비스 응답 시간 동안 Trigger Process가 작업을 차단하지 않도록 비동기 방식으로 운영된다.
Bulk APEX Trigger
- Bulk Trigger는 한번에 최대 200개의 레코드를 실행한다. 400개면 2번 수행
'Salesforce' 카테고리의 다른 글
SFDC File System (0) | 2021.09.30 |
---|---|
APEX TESTING (0) | 2021.09.30 |
SOSL(Salesforce Object Search Language (0) | 2021.09.30 |
SOQL (0) | 2021.09.30 |
Automation Tool& Apex (0) | 2021.09.30 |