[PL/SQL] Trigger ORACLE/PL-SQL 2012. 3. 29. 14:57

트리거는 INSERT, UPDATE, DELETE가 실행 될 경우 TABLE에 대해 묵시적으로 실행되는 프로시저이다.

이는 테이블과 별도로 데이터 베이스에 저장이 되고 뷰에 대해서는 정의가 불가능하다.

또한 행과 문장 트리거 두가지로 이루어지는데,

행 트리거는 컬럼 각각의 행의 데이터 변화가 생길 때 마다 실행되고 행의 실제 값을 제어하며

문장 트리거는 단 한번만 실행되면서 컬럼의 데이터 행을 제어가 가능하다.

트리거의 문법은 다음과 같은 형태이다.

CREATE OR REPLACE TRIGGER test_trigger

BEFORE|AFTER

trigger_event ON table

[FOR EACH ROW]

[WHEN (condition)]

위에서 보면 BEFORE, AFTER, trigger_event, FOR EACH ROW를 볼 수 있다.

이의 설명은 다음과 같다. 

속성

설명 

BEFORE 

삽입, 삭제, 업데이트 전에 트리거 실행

AFTER

삽입, 삭제, 업데이트 후에 트리거 실행

 

trigger_event

삽입, 삭제, 업데이트 중 한개 이상 가능

FOR EACH ROW

행 트리거 실행

다음은 사용 방법이다.

CREATE OR REPLACE TRIGGER test_trigger

BEFORE

UPDATE ON TABLE

FOR EACH ROW

DBMS_OUTPUT.PUT_LINE(old.NO);

DBMS_OUTPUT.PUT_LINE(new.NO);

BEGIN

END;

위와 같이 처리하고 업데이트 문을 실행시키면 변경 전과 변경 후의 데이터가 나타 날 것이다.

또한 OR 키워드를 이용하여 UPDATE OR INSERT OR DELETE 를 이용하면 각기 문장이 일어 났을 경우에도 그 처리 된 내용을 확인 할 수 있을 것이다.