트리거란?
데이터베이스 시스템에서 데이터의 삽입, 갱신, 삭제 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형 SQL이다.
트리거는 데이터베이스에 저장되며, 데이터 변경 및 무결성 유지, 로그 메시지 출력 등의 목적으로 사용된다.
트리거의 구문에는 DCL을 사용할 수 없으며, DCL이 포함된 프로시저나 함수를 호출하는 경우에도 오류가 발생한다.
DECLARE
EVENT
BEGIN
CONTROL
SQL
EXCEPTION
END
CREATE [OR REPLACE] TRIGGER 트리거명 [동작시기 옵션] [동작 옵션] ON 테이블명
REFERENCING [NEW | OLD] AS 테이블명
FOR EACH ROW
[WHEN 조건식]
BEGIN
트리거 BODY;
END;
동작시기 옵션 : 트리거가 실행될 때를 저장한다.
AFTER : 테이블이 변경된 후에 트리거가 실행된다.
BEFORE : 테이블이 변경되기 전에 트리거가 실행된다.
동작 옵션 : 트리거가 실행되게 할 작업의 종류를 지정한다.
INSERT, DELETE, UPDATE
NEW | OLD : 트리거가 적용될 테이블의 별칭을 지정한다.
NEW : 추가되거나 수정에 참여할 튜플들의 집합(테이블)을 의미한다.
OLD : 수정되거나 삭제 전 대상이 되는 튜플들의 집합(테이블)을 의미한다.
FOR EACH ROW : 각 튜플마다 트리거를 적용한다는 의미이다.
WHEN 조건식 : 선택적인 예약어이다. 트리거를 적용할 튜플의 조건을 지정한다.
트리거 BODY
BEGIN과 END 사이에는 적어도 하나의 SQL 문이 있어야 한다.