'trigger'에 해당되는 글 2건

  1. 2008.05.07 ORACLE-문장트리거
  2. 2008.05.05 ORACLE-트리거-행트리거 2

사용할 기본 테이블
사용자 삽입 이미지

전체 스크립트
사용자 삽입 이미지

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

이상으로 문장트리거의 예를 다루어 보았습니다.
보다 향상된 기능을 하는 트리거를 만들어보는 것은 독자들의 몫으로 남겨둡니다.
편안한 밤들 되시길...
Posted by 원철연(체르니)
,

트리거(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 원철연(체르니)
,