Oracle trigger 오라클 트리거에 대해 알아보자
트리거란 해당 DBMS에 대해 특정 이벤트가 발생했을때
관리자가 원하는 액션을 자동으로 수행하는 프로세스를 말합니다.
대부분의 경우 테이블에 어떤 이벤트가 발생했을 경우 자동으로 관리자가 정의한 PL/SQL이 발생하도록 합니다.
실무에서 반드시 사용되는 요소는 아니지만 로그데이터를 남기기위해 또는 관리자 이외의 사용자에 따른 DDL명령, DML명령 등이 실행되지 못하도록 설정 할 수 있습니다.
생성구문
CREATE [OR REPLACE] TRIGGER 트리거명 [BEFORE | AFTER]
triggering-event[Insert,delete,update] ON 테이블명
[Referencing OLD AS {변경전 값을 참조하는 변수명} NEW AS {변경 후 값을 참조하는 변수명}]
[FOR EACH ROW]
[WHEN (condition)]
DECLARE
--변수선언
BEGIN
--트리거 PL/SQL 명령 작성
EXCEPTION
END;
#구문에 대한 상세 설명#
* CREATE [OR REPLACE] TRIGGER [schema.]trigger : 트리거 생성, 재생성 명령이다.
* BEFORE : INSERT, UPDATE, DELETE문이 실행되기 전에 트리거가 실행 된다.
* AFTER : INSERT, UPDATE, DELETE문이 실행된 후 트리거가 실행 된다.
* trigger_event : INSERT, UPDATE, DELETE 중에서 한 개 이상 올 수 있다.
* FOR EACH ROW : 이 옵션이 있으면 행 트리거가 된다.
- 행수준 트리거(Row -Level Triggers) : 트랜잭션내의 각 행에 대해 한 번만 수행(컬럼의 각각의 행의 데이터 행 변화가 생길 때마다 실행되며,각 데이터 해의 값을 제어할 수 있다.)
- 문장수준 트리거(Statement-level Triggers) : 트랜잭션내에서 한번만 수행되며, 컬럼의 각 데이터 행을 제어 할 수 없다.
* [WHEN (condition)]] : 데이터의 처리유형 이외의 조건을 삽입할 경우에 사용.
※ 따라서, 위의 옵션을 어떻게 사용하느냐에 따라 만들수 있는 트리거 유형은
트리거 이벤트(INSERT,UPDATE,DELETE) 3종류, FOR EACH ROW 유무에 따른 2종류, Before와 After에 대해 2종류로
3*2*2 = 총 12가지 유형을 만들 수 있다.
트리거의 종류
AFTER
이벤트가 발생된 직후 동작하고 테이블에서만 사용가능하다.
BEFORE
이벤트가 발생되기 전에 동작하고 테이블, 뷰에서 사용가능하다.
트리거에 대한 내용을 알아보았습니다.
이제 이를 관리하기 위한 명령어들에 대해 알아보겠습니다.
활성화/비활성화
ALTER TRIGGER 트리거이름 DISABLE or ENABLE;
테이블에 속한 트리거 활성화/비활성화
ALTER TABLE 테이블이름 DISABLE or ENABLE ALL TRIGGER;
트리거 수정 후 재컴파일
ALTER TRIGGER 트리거이름 COMPILE;
트리거 삭제
DROP TRIGGER 트리거이름
트리거 조회
SELECT * FROM USER_TRIGGERS;
트리거 에러확인
SELECT * FROM USER_ERRORS WHERE TYPE ='TRIGGER';
트리거 생성 중에 아래와 같은 메시지가 출력된다면
Warning: Trigger created with compilation errors.
show error하여 에러가 발생하는 부분을 확인할 수 있지만 특정한 경우는 볼수없다.
show errors trigger 트리거이름 명령으로 구체적인 정보 확인 가능.
Oracle 19c HOT Backup TEST해보기 2_Archive mode 활용 (0) | 2020.12.08 |
---|---|
Oracle 19c HOT Backup TEST해보기 (0) | 2020.12.08 |
Oracle DBA의 alert.log로그관리법 알아보자 (0) | 2020.12.01 |
ORACLE DB_rman으로 아카이브 정리하기 (0) | 2020.11.25 |
#Oracle DBMS_Archive log mod/ No Archive log mode /아카이브모드/ 노아카이브모드 알아보기 (0) | 2020.11.24 |
댓글 영역