자료 저장소

* 기본형식

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;

댓글 로드 중…

최근에 게시된 글