[SQL] Procedure와 Trigger 개념 정리 및 비교

박우진·2025년 5월 20일

SQLD

목록 보기
5/12

SQL에서는 특정 작업을 자동화하거나 반복적인 연산을 효율적으로 처리하기 위해 **Procedure(프로시저)**와 **Trigger(트리거)**를 제공합니다. 이 글에서는 두 개념의 차이점과 특징을 정리하고, 언제 어떤 것을 사용하는 것이 적합한지 비교합니다.


1. Stored Procedure (저장 프로시저)

개념

Procedure는 SQL 문장을 하나의 단위로 묶어 저장한 사용자 정의 프로그램입니다. 사용자가 명시적으로 호출하여 실행해야 하며, 복잡한 로직을 캡슐화할 수 있습니다.

작동 방식

-- 생성
CREATE PROCEDURE procedure_name()
BEGIN
    -- SQL 로직
END;

-- 호출
CALL procedure_name();

특징

  • 명시적으로 호출해야 실행됨 (CALL, EXEC 등)
  • 매개변수 전달 가능 (IN, OUT, INOUT)
  • 반복 작업, 트랜잭션 처리, 에러 핸들링 등 다양한 로직 가능
  • 내부에서 COMMIT, ROLLBACK트랜잭션 제어 가능

장단점

장점단점
코드 재사용 가능정의 및 관리가 별도로 필요함
복잡한 로직 캡슐화 가능사용자 호출 없으면 실행되지 않음
트랜잭션 처리 등 고급 기능 지원오용 시 복잡도 증가

2. Trigger (트리거)

개념

Trigger는 특정 테이블에서 INSERT, UPDATE, DELETE 이벤트가 발생할 때 자동 실행되는 객체입니다. 데이터 무결성 유지나 자동 감사(audit) 기능 등에 활용됩니다.

작동 방식

CREATE TRIGGER trigger_name
AFTER INSERT ON table_name
FOR EACH ROW
BEGIN
    -- 자동 실행될 SQL 로직
END;

특징

  • 자동 실행됨 (사용자가 직접 호출하지 않음)
  • 특정 DML 이벤트(INSERT, UPDATE, DELETE)에 반응
  • 트랜잭션 처리 제한 있음: COMMIT, ROLLBACK 사용 불가
  • 데이터 감사, 로깅, 무결성 검사 등에서 주로 사용

장단점

장점단점
데이터 변경에 대해 자동 대응 가능로직 흐름 파악이 어려울 수 있음
무결성 보장 및 감사 처리 가능트랜잭션 제어 불가 (COMMIT 등 사용 불가)
사용자 개입 없이 자동 실행디버깅 및 테스트 어려움

비교 요약

항목ProcedureTrigger
실행 방식명시적 호출 (CALL, EXEC)이벤트 기반 자동 실행 (AFTER, BEFORE)
주 용도반복 업무 로직, 트랜잭션 처리 등무결성 유지, 로깅, 데이터 추적
트랜잭션 제어가능 (COMMIT, ROLLBACK)불가능
매개변수사용 가능 (IN, OUT)사용 불가
호출 시점개발자 혹은 사용자 호출 시점지정된 이벤트 발생 시점
디버깅/관리 용이성비교적 쉬움상대적으로 어려움

사용 요약

상황추천 객체
반복적으로 호출해야 하는 로직 처리 필요Procedure
데이터 변경이 발생할 때 자동으로 처리해야 하는 로직 존재Trigger
트랜잭션 분기 처리(예: 중간에 ROLLBACK)가 필요한 경우Procedure
로깅, 무결성 검사, 자동 감사 처리가 필요한 경우Trigger

마무리

  • ProcedureTrigger는 모두 SQL에서 로직을 저장하고 실행할 수 있는 강력한 도구입니다.
  • 하지만 실행 방식과 목적, 제약 사항이 다르기 때문에, 상황에 맞게 선택하는 것이 중요합니다.
  • 특히 Trigger는 자동 실행되며 COMMIT, ROLLBACK불가능하므로 트랜잭션 처리에는 적합하지 않습니다.
  • 반면 Procedure는 명시적 호출이 필요하지만 훨씬 유연하고 복잡한 작업이 가능합니다.

0개의 댓글