트리거(TRIGGER)
트리거는 데이터베이스 시스템에서 데이터의 삽입(INSERT), 갱신(UPDATE), 삭제(DELETE)등의 이벤트(EVENT)가 발생할 때 관련 작업이 자동으로 수행되도록 하는 절차형 SQL입니다.
- 트리거는 데이터베이스에 저장되며, 데이터 변경 및 무결성 유지, 로그 메시지 출력 등의 목적으로 사용됩니다.
- 트리거의 구문에는 DCL(데이터 제어어)을 사용할 수 없으며, DCL이 포함된 프로시저나 함수를 호출하는 경우에 오류가 발생합니다.
*이벤트(EVENT) : 이벤트는 시스템에 어떤 일이 발생한 것을 말하며, 트리거에서 이벤트는 데이터의 삽입, 갱신, 삭제와 같이 데이터 조작 작업이 발생했음을 의미합니다.
*무결성(INTEGRITY) : 무결성은 데이터베이스에 들어 있는 데이터의 정확성을 보장하기 위해 정확하지 않은 데이터가 데이터베이스 내에 저장되는 것을 방지하기 위한 제약 조건을 말합니다.
*로그 메세지 출력: 사용자가 컴퓨터에 요청한 명령이나 컴퓨터가 데이터를 처리하는 과정 및 결과 등을 기록으로 남긴 것을 로그라고 하며, 이것을 메시지로 출력할 때 트리거를 이용할 수 있습니다.
◆트리거의 구성도
이벤트 → 트리거 → 데이터 변경
[트리거]
DECLARE(필수)
EVENT(필수)
BEGIN(필수)
-CONTROL
-SQL
-EXCEPTION
END(필수)
1. DECLARE : 트리거의 명칭, 변수 및 상수, 데이터 타입을 정의하는 선언부이다.
2. EVENT : 트리거가 실행되는 조건을 명시한다.
3. BEGIN / END : 트리거의 시작과 종료를 의미한다.
4. CONTROL : 조건문 또는 반복문이 삽입되어 순차적으로 처리된다.
5. SQL : DML문이 삽입되어 데이터 관리를 위한 조회, 추가, 수정, 삭제 작업을 수행한다.
6. EXCEPTION : BEGIN~END 안의 구문 실행 시 예외가 발생하면 이를 처리하는 방법을 정의한다.
◇트리거의 생성
트리거를 생성하기 위해서는 CREATE TRIGGER 명령어를 사용한다.
<표기형식>
CREATE [OR REPLACE] TRIGGER 트리거명 [ 동작시기 옵션 ] [동작 옵션] ON 테이블명
REFERENCING [NEW/ OLD] AS 테이블명
FOR EACH ROW
[WHEN 조건식]
BEGIN
트리거 BODY;
END;
- OR REPLACE : 선택적인(Optional)예약어이다. 이 예약어를 사용하면 동일한 트리거 이름이 이미 존재하는 경우, 기존의 트리거를 대체할 수 있다.
- 동작시기 옵션 : 트리거가 실행 될 때를 지정한다.
*AFTER - 테이블이 변경된 후에 트리거가 실행 / BEFORE - 테이블이 변경되기 전에 트리거가 실행
- 동작 옵션 : 트리거가 실행되게 할 작업의 종류를 지정한다.
INSERT(새로운 튜플 삽입), DELETE(튜플 삭제), UPDATE(튜플 수정)
- NEW/OLD : 트리거가 적용 될 테이블의 별칭을 지정한다.
NEW - 추가되거나 수정에 참여할 튜픙들의 집합(테이블)을 의미한다.
OLD - 수정되거나 삭제 전 대상이 되는 튜플들의 집합(테이블)을 의미한다.
- FOR EACH ROW : 각 튜플마다 트리거를 적용한다는 의미이다.
- WHEN 조건식 : 선택적인 예약어로 트리거를 적용할 튜플의 조건을 지정한다.
- 트리거 BODY
*트리거의 본문 코드를 입력하는 부분
*BEGIN으로 시작해서 END로 끝나는데, 적어도 하나 이상의 SQL문이 있어야 한다. 그렇지 않으면 오류가 발생한다.
◇트리거의 제거
트리거를 제거하기 위해서는 DROP TRIGGER 명령어를 사용한다.
DROP TRIGGER 트리거명;
*트리거는 데이터가 변경될 때 자동으로 수행되므로 호출문이 존재하지 않습니다.
'공부 및 교육 > 정보처리기사 실기 이론' 카테고리의 다른 글
ERD(Entity Relationship Diagram)- 개체/관계 다이어그램, ER다이어그램 (0) | 2023.02.27 |
---|---|
SQL 기본 용어 정리 (0) | 2023.02.27 |
프로시저(Procedure)- 프로시저 생성, 프로시저 구성도, 프로시저 삭제 (0) | 2023.02.26 |
SQL - DDL (0) | 2023.02.25 |
8장 SQL 응용 - 1. SQL : DDL (0) | 2022.08.09 |
댓글