본문 바로가기
IT ▶/Data

데이터베이스 TRIGGER 개념, TRIGGER 사용방법 알아보자. – by.SC

by 오프로 2019. 11. 2.

 

 

 

데이터베이스 트리거 (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

 

데이터베이스 INDEX 개념과 INDEX 사용방법 알아보자. – by.SC

DATABASE INDEX * 인덱스(INDEX) : 어떤 데이터가 어디 위치하였는지 위치 정보를 가진 주소록 개념 1> 인덱스가 필요한 이유 일반적으로 SELECT 구문을 통해 데이터 조회 요청 DB 서버 프로세스는 Memory (DB 버..

lovefor-you.tistory.com

 

 

저도 필요해서 찾아봐서 정리하였는데 도움이 되셨으면 해서 작성하였습니다~!

 

 

수정할 부분이나 다른 의견 있으시면 댓글 부탁드립니다!!

 

 

조금이나마 도움이 되셨으면 좋아요 하트♥나 구독 부탁드립니다~!


파이팅 하시고 좋은 하루 되세요!!

 

728x90
반응형