'행트리거'에 해당되는 글 1건

  1. 2008.05.05 ORACLE-트리거-행트리거 2

트리거(Trigger)

트리거는 프로시저, 함수와 같이 그 블록구조가 유사하지만 프로시저, 함수는 외부적인 실행명령으로 실행되는 반면에 트리거의 실행은 DML문이 발생할 때 시행된다. INSERT, UPDATE, DELETE문이 실행될 때 정의된 트리거도 실행된다.


트리거의 용도

1. 데이터 베이스 테이블 생성시에 참조 무결성과 데이터 무결성 그 밖의 조약조건으로
 
정의할 수 없는 복잡한 요구사항에 대한 조건을 생성

 

2. 테이블 데이터 작업에 대한 감시, 보안 용도

 

3. 테이블에 생기는 변화에 따라 필요한 다른 프로그램을 실행시킬 수 있음

 

트리거 형식

CREATE [OR REPLACE] TRIGGER 트리거 이름 BEFORE|AFTER

트리거 이벤트  ON 테이블이름
[FOR EACH Row]

[WHEN (condition)]

PL/SQL 블록

 

트리거의 종류

문장트리거(Statement-Level Trigger)와 행트리거(Row-Level Trigger)가 있으며 FOR EACH ROW 옵션을 사용하면 행트리거, 사용하지 않으면 문장트리거가 된다.

문장트리거는 단 한번 실행되며 컬럼의 데이터 값에 상관없이 그 칼럼의 변화가 일어남을 감지하여 실행되는 트리거 반면에 행트리거는 컬럼의 각각의 데이터행에 변화가 생길때마다 실행되며 그 데이터 행의 실제값을 제어할 수 있다.

 

예제) 업데이트문을 이용한 BEFORE UPDATE 행트리거를 보자.

사용자 삽입 이미지

실행 결과
사용자 삽입 이미지


[참고] 생성된 트리거 보는 법
          SQL>SELECT * FROM all_objects WHERE OBJECT_TYPE='TRIGGER';
Posted by 원철연(체르니)
,