가장 많이 사용되는 TRIGGER의 유형으로는 DML TRIGGER
어떤 프로시저를 실행했을때 올 반응들을 자동적으로 실행해주는것
특징
트리거를 만들기위해서는 권한이 필요하다. (CREATE, ALTER, DROP)
트리거 바디부분에 TCL명령은 포함할수없다.
ex) commit rollback savepoint
트리거의 정보는 USER_OBJECTS, USER_TRIGGERS,
USER_ERRORS DICTIONARY 를 조회하여 볼수있다.
단순 DML 트리거 유형
BEFORE트리거
테이블에서 DML 이벤트를 트리거 하기전에 트리거 본문실행
AFTER트리거
테이블에서 DML 이벤트를 트리거 한 후 트리거 본문 실행
INSTEAD OF트리거
트리거문 대신 트리거본문 실행 , 다른방법으로 수정 불가능한 뷰에 사용
문장 TRIGGER
à 영향을 받는 행이 전혀 없더라도 TRIGGER가 한 번은 실행
행 TRIGGER
à 테이블이 TRIGGER 이벤트의 영향을 받을 때마다 실행
à FOR EACH ROW
à OLD : TRIGGER가 처리한 레코드의 원래 값 저장
à NEW : 새 값을 포함
구문 형식
CREATE OR REPLACE TRIGGER 트리거명
TIMING BEFORE | AFTER
EVENT INSERT| UPDATE | DELETE
ON 테이블명
BEGIN
실행명령
END;
예제의결과는 내가 직원을 인서트하면 자동으로 직원이 추가되었습니다라는 출력문이 나와야한다.
결과
만약 웨어하우스에 상품을 추가한다면 자동으로 아이템테이블에도 그 수량 만큼 추가된다.