본문 바로가기

Oracle

트리거

사전적 의미 : ① 방아쇠 à (일련의 사건 등을 유발하는) 계기
ex. TABLE 입고(Event) / TABLE 재고(Trigger)
만약 입고테이블에 내가 수정을 했을때에 자동으로 재고테이블도 수정되는것.

특정 이벤트가 발생할 때마다 자동으로 실행되는 PL/SQL Block

개발자가 호출하여 사용할 수 없다!

DB 내에 오브젝트로 저장되어 관리

가장 많이 사용되는 TRIGGER의 유형으로는 DML TRIGGER

 

어떤 프로시저를 실행했을때 올 반응들을 자동적으로 실행해주는것


특징 

트리거를 만들기위해서는 권한이 필요하다. (CREATE, ALTER, DROP)


트리거 바디부분에 TCL명령은 포함할수없다.

ex) commit rollback savepoint


트리거의 정보는 USER_OBJECTS, USER_TRIGGERS,

 USER_ERRORS DICTIONARY 를 조회하여 볼수있다.


단순 DML 트리거 유형


BEFORE트리거

테이블에서 DML 이벤트를 트리거 하기전에 트리거 본문실행

AFTER트리거

테이블에서 DML 이벤트를 트리거 한 후  트리거 본문 실행

INSTEAD OF트리거

트리거문 대신 트리거본문 실행 , 다른방법으로 수정 불가능한 뷰에 사용


문장 TRIGGER

  à 영향을 받는 행이 전혀 없더라도 TRIGGER가 한 번은 실행


TRIGGER

  à 테이블이 TRIGGER 이벤트의 영향을 받을 때마다 실행

  à FOR EACH ROW

  à OLD  : TRIGGER가 처리한 레코드의 원래 값 저장

  à NEW  : 새 값을 포함


구문 형식 

CREATE OR REPLACE TRIGGER 트리거명

  TIMING BEFORE | AFTER

EVENT INSERT| UPDATE | DELETE

ON 테이블명

BEGIN

실행명령

END;


  예제의결과는 내가 직원을 인서트하면 자동으로 직원이 추가되었습니다라는 출력문이 나와야한다.


결과

만약 웨어하우스에 상품을 추가한다면 자동으로 아이템테이블에도 그 수량 만큼 추가된다.




'Oracle' 카테고리의 다른 글

데이터베이스 보안  (0) 2018.04.23
데이터베이스 모델링  (0) 2018.04.23
PL / SQL  (0) 2018.04.23
파티션 테이블  (0) 2018.04.23
6.SQL 함수  (0) 2018.04.22