Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

트리거와 프로시저의 차이점 한눈에 정리하기

데이터베이스를 다루다 보면 트리거(Trigger)프로시저(Procedure)라는 두 가지 저장 객체를 자주 접하게 됩니다. 두 기능은 이름은 비슷하지만 동작 방식과 용도가 확연히 다릅니다. 이 글에서는 트리거와 프로시저의 차이점을 항목별로 살펴보겠습니다.

트리거(Trigger)란?

  • 테이블에 INSERT, DELETE, UPDATE와 같은 이벤트가 발생하면 암묵적으로(자동으로) 실행됩니다.
  • 트리거의 중첩(Nesting)은 테이블을 통해 구현할 수 있습니다.
  • 다른 트리거 내부에서 호출하거나 정의할 수 없습니다.
  • COMMIT, ROLLBACK, SAVEPOINT와 같은 트랜잭션 제어문을 사용할 수 없습니다.
  • 참조 무결성(referential integrity)을 유지하는 데 활용됩니다.
  • 테이블에서 수행된 작업 이력을 기록하는 방식으로 감사(audit) 목적에도 사용됩니다.
  • 값을 반환하지 않습니다.
  • 매개변수를 전달받을 수 없습니다.

트리거 정의 문법

CREATE TRIGGER trigger_name

프로시저(Procedure)란?

  • EXEC, EXECUTE 또는 프로시저 이름을 직접 명시하는 방식으로 사용자나 애플리케이션이 명시적으로 호출합니다.
  • 다른 프로시저 내부에서 호출하고 정의할 수 있습니다.
  • COMMIT, ROLLBACK, SAVEPOINT와 같은 트랜잭션 제어문을 사용할 수 있습니다.
  • 사용자가 지정한 특정 작업을 수행하기 위해 사용됩니다.
  • 매개변수를 전달받을 수 있습니다.
  • 0개부터 n개까지 원하는 만큼 값을 반환할 수 있습니다.

프로시저 정의 문법

CREATE PROCEDURE procedure_name

핵심 차이점 요약

구분트리거프로시저
호출 방식이벤트 발생 시 자동 실행사용자·애플리케이션이 명시적 호출
매개변수전달 불가전달 가능
반환값없음0~n개 반환 가능
트랜잭션 제어문사용 불가사용 가능
중첩 정의다른 트리거 내 정의 불가다른 프로시저 내 정의 가능
주요 용도참조 무결성 유지, 변경 이력 기록사용자 지정 업무 로직 처리

정리하면, 트리거는 데이터 변경 이벤트에 자동으로 반응하는 객체이고, 프로시저는 필요할 때 호출해 사용하는 객체입니다. 데이터 무결성 검증이나 감사 로그 기록에는 트리거가 적합하고, 반복적으로 수행해야 하는 비즈니스 로직 처리에는 프로시저가 더 알맞습니다. 두 기능의 특성을 정확히 이해하고 상황에 맞게 활용하면 데이터베이스의 안정성과 효율성을 모두 높일 수 있습니다.