Skip to content

Trigger #

Find similar titles

21회 업데이트 됨.

Edit
  • 최초 작성자
  • 최근 업데이트

Structured data

Category
Database

Trigger? #

SQL Trigger(트리거)는 데이터베이스에서 특정 이벤트가 발생할 때 자동으로 실행되는 작업을 정의하는 데 사용되는 데이터베이스 객체이다. 이벤트는 특정 테이블에 대한 INSERT, UPDATE, DELETE와 같은 데이터 변경 작업이 될 수 있다. 트리거는 데이터 일관성을 유지하고 비즈니스 룰을 강제하는 데 사용된다.

트리거는 특정 조건이 충족될 때 실행되며, 트리거의 주요 목적은 데이터의 변경을 감지하고 추가적인 작업을 수행하는 것이다.

Trigger의 구성 요소 #

  1. 이벤트(Event)

    트리거가 실행되는 조건으로, 일반적으로 데이터 변경 작업이 포함된다. 예를 들어, INSERT, UPDATE, DELETE 등의 이벤트가 있다.

  2. 조건(Condition)

    트리거가 실행되는 조건을 정의한다. 특정 열의 값이 특정 기준을 충족할 때만 트리거가 실행될 수 있도록 하는 등의 조건을 설정할 수 있다.

  3. 작업(Action)

    트리거가 실행될 때 수행되는 작업이며, SQL 문이나 저장 프로시저 등이 될 수 있다. 주로 데이터 변경, 로그 기록, 알림 전송 등이 작업으로 수행된다.

Trigger의 유형 #

  1. AFTER Triggers

    이벤트가 발생한 후에 실행되는 트리거이며, 데이터 변경 작업이 완료된 후에 작업이 수행된다.

  2. BEFORE Triggers

    이벤트가 발생하기 전에 실행되는 트리거로, 데이터 변경 작업이 수행되기 전에 작업이 실행된다.

  3. INSTEAD OF Triggers

    이벤트가 발생했을 때 원래의 데이터 변경 작업 대신에 트리거에 정의된 작업을 실행한다. 일반적으로 뷰(View)와 함께 사용된다.

Trigger의 특징과 주의사항 #

  1. 트리거의 중첩

    일부 데이터베이스 시스템에서는 트리거를 중첩하여 사용할 수 있다. 이는 한 트리거가 다른 트리거를 호출하는 것을 의미한다.

  2. OLD 및 NEW 가상 테이블

    대부분의 트리거에서 사용할 수 있는 OLD 테이블과 NEW 테이블이 있다. 이들은 이벤트로 인해 영향을 받는 행의 이전(old) 상태 및 새로운(new) 상태를 제공한다.

  3. 트리거의 재귀 호출

    일부 데이터베이스에서는 트리거 내에서 같은 테이블에 대한 작업을 수행하면 재귀 호출이 발생할 수 있다. 이 경우 적절한 제어 로직을 사용하여 무한 루프를 방지해야 한다.

  4. 트리거의 성능 영향

    트리거는 데이터 변경 작업이 발생할 때마다 실행되기 때문에 잘못 사용하면 성능에 부정적인 영향을 미칠 수 있다. 특히 복잡한 작업이나 대량의 데이터를 다룰 때 주의가 필요하다.

  5. 트랜잭션과 트리거

    트리거는 일반적으로 트랜잭션 내에서 실행되며, 트랜잭션이 롤백 될 경우 트리거에 의한 작업도 롤백 된다.

  6. 보안 고려

    트리거가 실행될 때 어떤 작업이 수행되는지 주의해야 하며, 보안 상의 이슈를 고려해야 한다.

  7. 디버깅의 어려움

    트리거가 자동으로 실행되기 때문에 디버깅이 어려울 수 있다. 따라서 트리거를 작성할 때 주의가 필요하다.

Trigger의 종류 #

  1. DML Triggers

    데이터 조작 언어(Data Manipulation Language)에 의해 발생하는 이벤트를 처리하는 트리거로, 주로 INSERT, UPDATE, DELETE와 관련이 있다.

  2. DDL Triggers

    데이터 정의 언어(Data Definition Language)에 의해 발생하는 이벤트를 처리하는 트리거로, 테이블 생성, ALTER, DROP과 관련이 있다.

  3. LOGON 및 LOGOFF Triggers

    사용자가 데이터베이스에 로그인(LOGON)하거나 로그아웃(LOGOFF)할 때 실행되는 트리거이다.

참고 #

0.0.1_20231010_1_v71