Trigger
#
Find similar titles
-
최초 작성자
hcpark@insilicogen.com
-
최근 업데이트
hcpark@insilicogen.com
Structured data
- Category
- Database
Table of Contents
Trigger? #
SQL Trigger(트리거)는 데이터베이스에서 특정 이벤트가 발생할 때 자동으로 실행되는 작업을 정의하는 데 사용되는 데이터베이스 객체이다. 이벤트는 특정 테이블에 대한 INSERT, UPDATE, DELETE와 같은 데이터 변경 작업이 될 수 있다. 트리거는 데이터 일관성을 유지하고 비즈니스 룰을 강제하는 데 사용된다.
트리거는 특정 조건이 충족될 때 실행되며, 트리거의 주요 목적은 데이터의 변경을 감지하고 추가적인 작업을 수행하는 것이다.
Trigger의 구성 요소 #
-
이벤트(Event)
트리거가 실행되는 조건으로, 일반적으로 데이터 변경 작업이 포함된다. 예를 들어, INSERT, UPDATE, DELETE 등의 이벤트가 있다.
-
조건(Condition)
트리거가 실행되는 조건을 정의한다. 특정 열의 값이 특정 기준을 충족할 때만 트리거가 실행될 수 있도록 하는 등의 조건을 설정할 수 있다.
-
작업(Action)
트리거가 실행될 때 수행되는 작업이며, SQL 문이나 저장 프로시저 등이 될 수 있다. 주로 데이터 변경, 로그 기록, 알림 전송 등이 작업으로 수행된다.
Trigger의 유형 #
-
AFTER Triggers
이벤트가 발생한 후에 실행되는 트리거이며, 데이터 변경 작업이 완료된 후에 작업이 수행된다.
-
BEFORE Triggers
이벤트가 발생하기 전에 실행되는 트리거로, 데이터 변경 작업이 수행되기 전에 작업이 실행된다.
-
INSTEAD OF Triggers
이벤트가 발생했을 때 원래의 데이터 변경 작업 대신에 트리거에 정의된 작업을 실행한다. 일반적으로 뷰(View)와 함께 사용된다.
Trigger의 특징과 주의사항 #
-
트리거의 중첩
일부 데이터베이스 시스템에서는 트리거를 중첩하여 사용할 수 있다. 이는 한 트리거가 다른 트리거를 호출하는 것을 의미한다.
-
OLD 및 NEW 가상 테이블
대부분의 트리거에서 사용할 수 있는 OLD 테이블과 NEW 테이블이 있다. 이들은 이벤트로 인해 영향을 받는 행의 이전(old) 상태 및 새로운(new) 상태를 제공한다.
-
트리거의 재귀 호출
일부 데이터베이스에서는 트리거 내에서 같은 테이블에 대한 작업을 수행하면 재귀 호출이 발생할 수 있다. 이 경우 적절한 제어 로직을 사용하여 무한 루프를 방지해야 한다.
-
트리거의 성능 영향
트리거는 데이터 변경 작업이 발생할 때마다 실행되기 때문에 잘못 사용하면 성능에 부정적인 영향을 미칠 수 있다. 특히 복잡한 작업이나 대량의 데이터를 다룰 때 주의가 필요하다.
-
트랜잭션과 트리거
트리거는 일반적으로 트랜잭션 내에서 실행되며, 트랜잭션이 롤백 될 경우 트리거에 의한 작업도 롤백 된다.
-
보안 고려
트리거가 실행될 때 어떤 작업이 수행되는지 주의해야 하며, 보안 상의 이슈를 고려해야 한다.
-
디버깅의 어려움
트리거가 자동으로 실행되기 때문에 디버깅이 어려울 수 있다. 따라서 트리거를 작성할 때 주의가 필요하다.
Trigger의 종류 #
-
DML Triggers
데이터 조작 언어(Data Manipulation Language)에 의해 발생하는 이벤트를 처리하는 트리거로, 주로 INSERT, UPDATE, DELETE와 관련이 있다.
-
DDL Triggers
데이터 정의 언어(Data Definition Language)에 의해 발생하는 이벤트를 처리하는 트리거로, 테이블 생성, ALTER, DROP과 관련이 있다.
-
LOGON 및 LOGOFF Triggers
사용자가 데이터베이스에 로그인(LOGON)하거나 로그아웃(LOGOFF)할 때 실행되는 트리거이다.