Enterprise Infrastructure Intelligence ● Certified engineers online · Fast response guaranteed
웹서버/DB

저장 프로시저와 트리거의 아키텍처 및 구조적 차이

저장 프로시저는 명시적으로 호출되는 사전 컴파일된 SQL 문의 집합이며, 트리거는 데이터 조작 및 정의 이벤트에서 암묵적으로 실행되는 특수한 저장 프로시저입니다. 두 개념은 호출 방식, 반환값, 체인 구조에서 근본적으로 다릅니다.

2026.09.06  ·  30회  · 

저장 프로시저와 트리거의 정의적 차이

저장 프로시저는 데이터베이스 서버에 저장되는 사전 컴파일된 SQL 문과 제어문의 집합으로, 애플리케이션에서 명시적으로 호출하여 비즈니스 로직을 구현합니다. 반면 트리거는 저장 프로시저의 일종이지만 INSERT, UPDATE, DELETE와 같은 데이터 조작 이벤트나 CREATE, ALTER, DROP 같은 데이터 정의 이벤트 발생 시 데이터베이스 관리 시스템(DBMS)에 의해 암묵적으로 자동 실행됩니다.

실행 방식과 반환값의 구조적 차이

저장 프로시저는 CALL 문 또는 EXEC 명령으로 직접 호출되며 결과값을 반환할 수 있습니다. 반면 트리거는 반환값을 가질 수 없으며 지정된 이벤트 발생 시에만 실행됩니다. SQL Server 기준으로 DML 트리거는 AFTER(포함 FOR) 또는 INSTEAD OF 형식으로 분류되며, AFTER 트리거는 DML 작업 후 실행되고 INSTEAD OF 트리거는 원래 작업을 대체합니다.

아키텍처 수준의 트랜잭션과 제약 처리 메커니즘

트리거 실행 시 트리거 바디의 모든 작업과 원래 DML 명령은 단일 트랜잭션 내에서 처리되어야 합니다. 제약 조건 위반 시 INSTEAD OF 트리거 작업은 롤백되고 AFTER 트리거는 실행되지 않습니다. PostgreSQL에서 BEFORE 트리거가 NULL을 반환하면 이후 트리거와 DML 작업이 건너뜁니다. 행 수준 트리거와 명령문 수준 트리거로 구분되며, 각 수준마다 상이한 실행 정책이 적용됩니다.

실무 주의사항

트리거의 중첩 깊이는 기본적으로 32단계까지 지원되며 무한 재귀를 피해야 합니다. 트리거는 영향받는 행이 0행일 때 조기 반환으로 성능 저하를 방지하고, 트리거 내에서 ALTER TABLE, DROP TABLE 같은 DDL 문은 허용되지 않습니다. 저장 프로시저 내에서 트리거를 직접 호출할 수 없지만, 트리거 내에서는 저장 프로시저를 호출할 수 있습니다.

참고 출처: Microsoft Learn
WIKIDATA WORKSTATION
AI·렌더링에 최적화된
전문가용 워크스테이션
NVIDIA RTX GPU · 최대 192GB 메모리 · ECC 지원