INSERT, UPDATE, DELETE 등 DML에 의한 테이블 또는 뷰의 이벤트 발생 시
자동으로 실행될 내용을 정의하여 저장하는 객체(PROCEDURE)
SQL문의 실행 시기에 따른 분류
종류 | 설명 |
---|---|
BEFORE TRIGGER | SQL문 실행 전에 TRIGGER 실행 |
AFTER TRIGGER | SQL문 실행 후에 TRIGGER 실행 |
SQL문에 의해 영향을 받는 각 ROW에 따른 분류
종류 | 설명 |
---|---|
ROW TRIGGER (행 트리거) | 각 ROW에 대해 TRIGGER를 한 번씩 실행 TRIGGER 생성 시 FOR EACH ROW 옵션 작성 ▪ OLD : 참조 전 컬럼 값 ▪ NEW : 참조 후 컬럼 값 |
STATEMENT TRIGGER (문장 트리거) | SQL문에 대해 한 번만 실행 (DEFAULT TRIGGER) |
CREATE OR REPLACE TRIGGER STOCK_TRG
AFTER INSERT ON PRO_DETAIL
FOR EACH ROW -- ROW TRIGGER 옵션
BEGIN
IF (:NEW.STATUS = '입고')
THEN
UPDATE PRODUCT SET
STOCK = STOCK + :NEW.AMOUNT
WHERE PCODE = :NEW.PCODE;
ELSE -- 출고
UPDATE PRODUCT SET
STOCK = STOCK - :NEW.AMOUNT
WHERE PCODE = :NEW.PCODE;
END IF;
END;
/