개발/DATABASE

[MySQL] Trigger(트리거) 사용하기

독코더 2020. 3. 25. 13:44
반응형

1. TRIGGER(트리거)

데이터베이스 트리거(Database Trigger)는 테이블에 대한 이벤트에 반응해 자동으로 실행되는 작업을 의미합니다.

트리거는 데이터 조작 언어(DML)의 데이터 상태의 관리를 자동화하는 데 사용됩니다.

트리거를 사용하여 데이터 작업 제한, 작업 기록, 변경 작업 감사 등을 할 수 있습니다.

 

즉, 트리거란 테이블에 대한 변화(이벤트)가 발생했을 때 자동으로 실행되는 작업을 의미합니다.

 

MySQL에서는 버전 5.0.2에서 표준 트리거가 지원되었습니다.

INSERT, UPDATE, DELETE 동작에 대한 트리거가 지원되는데,

이때 주의하실 점은 MySQL은 각 테이블에 각 형태의 단 하나의 트리거만 허용합니다.

, INSERT BEFORE 하나, INSERT AFTER 하나, … 이런 식으로 허용합니다.

 

예제를 통해 알아보겠습니다.

1.delimiter //

: delimiter는 구문의 시작과 끝을 설정해주는 역할 입니다.

  그리고 //를 입력해 시작시점을 설정합니다. //는 자신이 원하는 문자로 수정이 가능합니다.

 

2. create definer = (정의자) trigger (트리거이름)

 : '정의자명'과 '트리거이름'이라는 이름을 가진 트리거를 만듭니다.

 

3~4. after insert on (테이블명)

 : 어떤 테이블에 언제 영향을 미칠지를 정의합니다.

  본인은 MSG_POINT라는 테이블에 INSERT가 이루어진 AFTER(다음)에 트리거가 실행하도록 했습니다.

 

5. for each row

 : 해당 구문을 통해 '행 트리거'임을 정의합니다.

 

6. BEGIN

 : 트리거 구문의 시작을 의미합니다.

 

7~10.

 : 트리거의 내용입니다.

 

11. end //

 : 트리거의 생성을 끝냅니다.

   그리고 //를 입력해 종료시점을 설정함으로써 쿼리가 끝났음을 알립니다.

 

12. delimiter ;

 : 이제 트리거 작성이 끝났으니, 트리거가 실행될 때 입력한 쿼리가 잘 작동할 수 있도록 ';'로 쿼리가 끝났음을 알려줍니다.

   delimiter;를 하지 않는다면 해당 트리거를 실행시켜도 트리거내부에 있는 쿼리는 입력만될 뿐, 끝나지 않아서 제대로 실행되지 않습니다.

반응형