본문 바로가기

PLSQL/Tirgger

Oracle Trigger

오라클 트리거 예제 ( Oracle Trigger Example )


오라클 트리거는 INSERT, UPDATE, DELETE 문장이 실행될 때 실행되기 전(BEFORE)이나 후(AFTER)에 부수적으로 수행해야 하는 작업을 지정하는 용도로 사용된다. 그러므로 트리거는 데이터베이스 내용이 변경되는 시기에 이벤트 방식으로 호출되므로 별도로 실행하는 명령어가 없다는 점이 다른 프로시저 형태와는 다르다.


아래는 Oracle SQL Developer 에서 생성툴을 이용해서 작성한 트리거의 예이다


CREATE OR REPLACE TRIGGER TRIGGER1 

BEFORE DELETE OR INSERT OR UPDATE OF ENAME ON EMP2 

BEGIN

  if inserting then

    dbms_output.put_line('inserting');

    --sql statements

  elsif updating then

    dbms_output.put_line('updating');

    --sql statements

  elsif deleting then

    dbms_output.put_line('deleting');

    --sql statements

  end if;

END;



위에서 생성된 트리거를 테스트하려면 다음과 같은 문장들을 실행하면 된다


insert into emp2 (empno, ename) values(1000,'홍길동');

update emp2 set ename='HONG' where empno=1000;

delete from emp2 where empno=1000;



UPDATE 트리거는 다른 트리거와 달리 갱신되는 특정 컬럼명을 지정하여 해당 컬럼이 갱신될 때만 자동으로 실행되도록 할 수도 있다

CREATE OR REPLACE TRIGGER TRIGGER2

AFTER UPDATE OF deptno, sal ON EMP

BEGIN

.......

END;