트리거(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';
'컴퓨터 관련 무료강좌 > 오라클(ORACLE)' 카테고리의 다른 글
ORACLE-데이터무결성 (0) | 2008.05.15 |
---|---|
ORACLE-문장트리거 (0) | 2008.05.07 |
ORACLE-커서 응용- 상위 5 레코드 중 일부칼럼 가져오기 (0) | 2008.05.02 |
ORACLE-DATE형 자료를 문자열로 바꾸는 함수만들기 (0) | 2008.05.02 |
ORACLE-패키지(PACKAGE) 관련 (0) | 2008.05.01 |