* 기본형식
CREATE OR REPLACE TRIGGER [트리거명]
[ AFTER | BEFORE ]
[ 트리거 이벤트]
ON
[ DATABASE | SCHEMA ]
DECLARE
............변수 선언.................
BEGIN
............코드 작성.................
END;
/
* 트리거 이벤트
CREATE / ALTER / DROP / DDL / GRANT 등등
* 트리거 속성
ORA_SYSEVENTDDL : 트리거 발생이벤트형을 반환
ORA_LOGIN_USER : 트리거 발생유저를 반환한다.
ORA_CLIENT_IP_ADDRESS : 클라이언트 아이피 주소를 반환한다.
ORA_DICT_OBJ_TYPEDDL : 영향받은 객체형을 반환한다.
ORA_DICT_OBJ_NAMEDDL : 영향받은 객체명을 반환한다.
ORA_DICT_OBJ_OWNERDDL : 객체의 소유자를 반환
ORA_GRANTEE : 권한을 부여받은 사용자의 수를 반환한다.
예) 테이블T1을 삭제하면 경고와함께 삭제된 데이터를 다른 테이블T2로 저장한다.
참고로 사용자에게는 CREATE ANY TABLE 권한이 있어야한다.
CREATE OR REPLACE TRIGGER TROFT1_2
BEFORE
DROP ON SCHEMA '어떤 스키마를 삭제 때
DECLARE
BEGIN
IF ORA_DICT_OBJ_NAME = 'T1' THEN '삭제된 테이블이 T1인지 확인
EXECUTE IMMEDIATE
'CREATE TABLE T2 AS SELECT * FROM ' || ORA_DICT_OBJ_NAME; '다른 테이블에 저장한다.
DBMS_OUTPUT.PUT_LINE(ORA_DICT_OBJ_NAME || '을 삭제하느냐 이놈!!');
END IF;
END;
[출처]DDL 트리거를 사용하자.|작성자근성
'컴퓨터 기술 > SQL,PL SQL' 카테고리의 다른 글
Oracle :: O'REILLY의 oracle pl/sql programmi REF CURSOR (0) | 2010.06.04 |
---|---|
Oracle :: REF CURSOR와 CURSOR 변수 (0) | 2010.06.04 |
Oracle :: 전체 요약 정리 (SQL,PL/SQL) (0) | 2010.06.03 |
Oracle :: 테이블 관련(2) 테이블의 제약조건 (0) | 2010.06.02 |
Oracle :: 테이블 관련(1) 테이블 생성,수정,삭제 (0) | 2010.06.02 |