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

SQL 트리거 완벽 가이드: 개념부터 생성·삭제 문법까지

SQL 트리거(Trigger)는 사용자가 특정 테이블과 상호작용할 때 다른 여러 이벤트를 자동으로 연쇄 실행시키는 이벤트입니다. 이 SQL 기능은 폼 데이터 검증이나 비즈니스 규칙 강제 등에 유용하게 활용됩니다.

트리거가 실행되는 시점

트리거는 아래 세 가지 이벤트가 발생하기 전(BEFORE) 또는 후(AFTER)에 실행됩니다.

  • INSERT – 새로운 행(row)이 삽입될 때
  • UPDATE – 기존 행이 수정될 때
  • DELETE – 행이 삭제될 때

어떤 트리거가 실행되고 어떤 동작이 수행되는지는 작성 방식에 따라 달라집니다. 먼저 CREATE 문부터 살펴보겠습니다.

CREATE TRIGGER <trigger_name> [BEFORE|AFTER] [INSERT|UPDATE|DELETE]
ON <table_name> [FOR EACH ROW|FOR EACH STATEMENT]
BEGIN
  <trigger_logic>
END;

<>로 묶인 부분에는 원하는 이름이나 로직을 직접 입력하고, [ ] 안에서는 제시된 옵션 중 하나를 선택하면 됩니다.

BEFORE/AFTER와 INSERT·UPDATE·DELETE

각 목록에서 하나씩 선택합니다. BEFORE/AFTER는 트리거가 실행되는 시점을 결정하고, INSERT/UPDATE/DELETE는 트리거를 시작하게 만드는 이벤트를 의미합니다.

FOR EACH ROW vs FOR EACH STATEMENT

두 옵션의 차이는 트리거가 실행되는 횟수에 있습니다. FOR EACH ROW는 테이블에서 영향을 받는 각 행마다 트리거가 실행됩니다. 반면 FOR EACH STATEMENT는 실제로 갱신된 행이 있는지와 관계없이 최소 한 번은 반드시 실행됩니다.

트리거 삭제하기

데이터베이스나 테이블과 마찬가지로 트리거에도 DROP 옵션이 제공됩니다.

DROP TRIGGER [IF EXISTS] trigger_name;

IF EXISTS는 선택 사항입니다. 이 구문을 포함하면 "트리거가 존재하지 않습니다"라는 오류를 예방할 수 있습니다. 또한 테이블을 삭제하면 해당 테이블과 연관된 모든 트리거도 함께 자동으로 삭제됩니다.

트리거 작성의 핵심 요소 3가지

SQL 트리거를 작성하려면 다음 세 가지 핵심 요소가 필요합니다.

  • 트리거의 이름과 이벤트 발생 시점을 지정하는 CREATE 문
  • 트리거가 실행되는 빈도를 정하는 ROW/STATEMENT 옵션
  • 실제 트리거 로직을 담는 BEGIN/END 블록

처음에는 잘 이해되지 않더라도 꾸준히 연습해 보세요. SQL 트리거는 고급 개념이기 때문에 다른 주제나 함수보다 더 많은 반복 학습이 필요할 수 있습니다.