데이터베이스 트리거 (TRIGGER) 개요
- 서브 프로그램 단위로 테이블, 뷰, 스키마 또는 PL/SQL 블록으로 관련된 특정 사건마다 자동으로 해당 블록이 실행
- 방아쇠(TRIGGER) 의미로 방아쇠를 당기면 총알이 발사되듯이, 특정 이벤트가 발생되면 자동으로 실행된다.
방아쇠 = 이벤트
총 알 = 자동 실행
- A테이블에 데이터가 들어오면, 연관된 B테이블에도 데이터가 증가되는 것이 트리거 사용 예시입니다.
- 데이터베이스 내 오브젝트로 관리되며, 관련 명령어는 SQL 구문들과 유사합니다.
1. TRIGGER 구조
- 실행 시점 (TIMING)
- 실행 사건 (EVENT)
- 몸체 (BODY)
2. 기본 명령어
1> 생성 : CREATE TRIGGER
2> 수정 : ALTER TRIGGER
3> 삭제 : DROP TRIGGER
-> TCL 명령 (COMMIT, ROLLBACK, SAVEPOINT) 사용 불가
3. 데이터베이스 이벤트 TRIGGER
- 데이터베이스 내에서 생기는 이벤트들을 관리하기 위해 생성하는 TRIGGER.
1> 유저 이벤트 TRIGGER
- 사용자 통해 발생되는 작업에 TRIGGER 생성
- CREATE, ALTER, DROP
- 로그온 or 로그오프
2> 데이터베이스 or 시스템 이벤트 TRIGGER
- DB 전체 영향주는 작업에 TRIGGER 생성
- 데이터베이스 시작 or 종료
- 임의 또는 특정 오류
4. TRIGGER 생성
<문법>
CREATE [OR REPLACE] TRIGGER trigger_name
timing
event1 [OR event2 OR ....]
ON {table_name|view_name|SCHEMA|DATABASE}
[REFERENCING OLD AS old | NEW AS new]
[FOR EACH ROW [WHEN (condition)]]
trigger_body
- OR REPLACE
생성하고자 하는 패키지가 기존에 있을 경우, 기존의 내용을 현재 내용으로 수정하는 옵션
- Trigger_name
생성할 Trigger 명은 같은 도메인 내에서 중복되면 안됩니다.
- Timing
TRIGGER 실행 시점으로 EVENT 발생 전, 후 인 BEFORE과 AFTER로 분류
특정 뷰 (VIEW)의 DML 경우 INSTEAD OF 사용
- Event
TRIGGER 실행 사건으로 DML_Event(테이블/뷰), DDL_Event(SCHEMA/DATABASE), DATABASE_Event 구분
- ON
TRIGGER 발생 레벨 또는 대상으로 테이블/뷰 또는 SCHEMA, DATABASE 지정
- REFERENCING
테이블/뷰 행 TRIGGER 키워드, 처리되는 행에 대해 변경 전 값과 변경 후 값을 참조
DEFAULT 값 : OLD, NEW
- FOR EACH ROW
테이블/뷰 행 TRIGGER 명시, VIEW의 INSTEAD OF 에 대해서는 기본적 행 TRIGGER 정의로 생략 가능
- WHEN
테이블/뷰 행 TRIGGER의 각 행에 제약
조건은 반드시 괄호 () 사용
- Trigger_body
TRIGGER 실행 부분 정의
- 스키마 TRIGGER 권한
생성 : GRANT CREATE TRIGGER TO SCOTT;
변경 : GRANT ALTER TRIGGER TO SCOTT;
삭제 : GRANT DROP TRIGGER TO SCOTT;
- 데이터베이스 TRIGGER 권한
생성 : GRANT ADMINISTER DATABASE TRIGGER TO SCOTT;
5. TRIGGER 생성 예시
사용자 로그온, 로그오프 시마다 정보 테이블에 추가
- 로그온 TRIGGER 생성
CREATE OR REPLACE TRIGGER TABLE_LOG
ALTER LOGON ON database
BEGIN
INSERT INTO LOG_ON
VALUES (USER, SYSDATE);
END;
- 로그오프 TRIGGER 생성
CREATE OR REPLACE TRIGGER TABLE_LOG
ALTER LOGOFF ON database
BEGIN
INSERT INTO LOG_OFF
VALUES (USER, SYSDATE);
END;
아래는 인덱스(INDEX)에 대해 정리한 내용입니다. 참고 하시기 바랍니다!
https://lovefor-you.tistory.com/183
저도 필요해서 찾아봐서 정리하였는데 도움이 되셨으면 해서 작성하였습니다~!
수정할 부분이나 다른 의견 있으시면 댓글 부탁드립니다!!
조금이나마 도움이 되셨으면 좋아요 하트♥나 구독 부탁드립니다~!
파이팅 하시고 좋은 하루 되세요!!
'IT ▶ > Database' 카테고리의 다른 글
데이터베이스 INDEX 개념과 INDEX 사용방법 알아보자. – by.SC (0) | 2019.11.02 |
---|---|
데이터베이스 VIEW 개념과 VIEW 사용방법 알아보자. – by.SC (0) | 2019.11.02 |
[빅데이터] 데이터 수집, 데이터 탐색 (예측모형, 과적합, 불균형) (0) | 2019.10.28 |
[빅데이터] 통계 확률 기초 개념 (조건부 확률, 정규분포) (0) | 2019.10.26 |
[빅데이터 분석] 데이터 시각화 개념과 종류 (Data Visualization) (0) | 2019.10.09 |