[DB/SQL] 트리거 Trigger

songeunm·2025년 6월 7일

DB & SQL

목록 보기
21/27

🎱 정의

테이블에 INSERT, UPDATE, DELETE 같은 이벤트가 발생할 때 자동으로 실행되는 저장 프로시저

🎱 주요 구성 요소

  • 이벤트
    • 트리거를 호출할 DML 작업
    • INSERT, UPDATE, DELETE
    • 일부 DBMS에서는 DDL 트리거(CREATE, ALTER, DROP) 또한 사용 가능
  • 시점
    • BEFORE, AFTER, INSTEAD OF
  • 대상 테이블
    • 트리거가 감시할 테이블
  • 실행 코드
    • 트리거가 실행할 SQL 구문
    • ex) 로깅, 자동 값 변경

🎱 시점 별 정리

  • BEFORE
    • DML 실행 전 트리거 실행
    • 입력값 가공
  • AFTER
    • DML 실행 후 트리거 실행
    • 로깅, 감사 용도
  • INSTEAD OF
    • DML을 다른 방식으로 대체
    • 주로 뷰에서 사용

🎱 예시 (MSSQL 기준)

-- Users 테이블에 INSERT 발생 후 자동으로 User_Log 테이블에 기록하는 트리거
CREATE TRIGGER trg_AfterInsert
ON Users -- 대상 테이블
AFTER INSERT -- 시점, 이벤트
AS
BEGIN
	-- 실행 코드
	INSERT INTO User_Log(UserId, ActionTime)
	SELECT id, GETDATE()
	FROM inserted;
END;

🎱 장단점

⚽️ 장점

  • 자동화된 데이터 처리 가능
  • 중앙 집중 제어 → 비즈니스 로직이 분산되지 않음
  • 무결성 보장을 보조

⚽️ 단점

  • 코드에 직접 안보여 디버깅 어려움
  • 많은 트리거가 중첩될 시 성능 저하
  • 자동 실행되므로 로직 흐름 파악 어려움
  • 트리거가 트리거 호출하는 구조 → 무한 루프 위험

🎱 Trigger vs. Stored Procedure

항목트리거저장 프로시저
호출 방식자동 실행명시적으로 호출
사용 목적이벤트 감지, 무결성, 감사비즈니스 로직 처리
디버깅 난이도높음낮음
profile
데굴데굴 구르는 개발자 지망생

0개의 댓글