트리거(Trigger)
트리거는 어떤 테이블에 이벤트(INSERT, UPDATE, DELETE)가 발생했을 때 자동적으로 실행되는 작업입니다.
제가 경험한 트리거는 테이블의 히스토리를 남기기 위한 목적으로 사용됐었습니다.
오라클에서 트리거의 문법은 다음과 같습니다.
CREATE [OR REPLACE] TRIGGER [트리거명]
[AFTER OR BEFORE]
INSERT OR UPDATE OR DELETE ON [테이블명] [REFERENCING NEW AS NEW OLD AS OLD]
[FOR EACH ROW]
[DECLARE]
BEGIN
END [트리거명];
- AFTER : 이벤트가 발생한 후 트리거 실행 | BEFORE : 이벤트가 발생하기 전에 트리거 실행
- INSERT, UPDATE, DELETE : 트리거 이벤트로서 하나 이상 올 수 있음
- FOR EACH ROW : 행 트리거 여부를 결정. FOR EACH ROW가 없으면 문장 트리거가 실행
- DECLARE : 변수 선언부
- BEGIN : 트리거 실행
- REFERENCING NEW AS NEW OLD AS OLD : 이전 값과 새로운 값을 참조할 때 사용하게 되는데 아래와 같이 사용할 수 있습니다.(밑줄 친 부분은 변수명으로써 변경 전 값을 참조할 변수명과 새로운 값을 참조할 변수명을 입력해주면 됩니다)
IF INSERTRING THEN
INSERT INTO TABLE_HIST(NUM, NAME)
SELECT :NEW.NUM, :NEW.NAME
FROM DUAL
ELSE IF UPDATEING THEN
INSERT INTO TABLE_HIST(NUM, NAME)
SELECT :OLD.NUM, :OLD.NAME
FROM DUAL
+ 피드백은 언제나 환영입니다 :)