[오라클]트리거 생성, 삭제 :: 개발/일상_Mr.lee

[오라클]트리거 생성, 삭제

Posted by Mr.mandu.
2018. 2. 9. 14:22 개발/DB

안녕하세요.

오늘은 오라클에서 트리거를 생성하고

실행시켜 보겠습니다.


트리거란?

insert, update, delete 문이 table에 대해 실행될때 수행되는 프로시저이다.

(어떠한 데이터에 변화가 이루어졌을때 트리거가 실행된다.)


 - 트리거는 table과 별도로 database에 저장 

 - view에 대해서가 아니라 table에 관래 정의 


트리거 생성 쿼리


CREATE OR REPLACE TRIGGER TRG_DEPT

       AFTER

       UPDATE ON dept

       FOR EACH ROW

       

       DECLARE

        -- 변수를 선언할 때는 DECLARE문을 사용 

        v_test CHAR(100);

        

BEGIN

         DBMS_OUTPUT.PUT_LINE('변경 전 컬럼 값 : ' ||:old.dname);

          DBMS_OUTPUT.PUT_LINE('변경 후 컬럼 값 : ' || :new.dname);

          

          v_test := :old.dname;

          

         DBMS_OUTPUT.PUT_LINE('변수  값 : ' || v_test);

     END;

/



쿼리를 살펴보시면

트리거 이름 : TRG_DEPT

테이블 대상 : dept

설명 : dept 테이블이 update될때 트리거 실행


색칠된 곳은 트리거의 옵션 입니다.

After, Before가 있으며 

dept 테이블의 update 이후 or 이전 실행 여부 설정 입니다.


빨간색 글씨는 

update문 이전의 데이터를 나타냅니다.

사용법은

:old.컬럼, :new.컬럼

입니다.



update문 실행

update dept SET dname='RESEARCH_Mod' WHERE deptno in ('20');


트리거 실행 결과



트리거 삭제

DROP PROCEDURE TRG_DEPT;