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;를 하지 않는다면 해당 트리거를 실행시켜도 트리거내부에 있는 쿼리는 입력만될 뿐, 끝나지 않아서 제대로 실행되지 않습니다.
'개발 > DATABASE' 카테고리의 다른 글
[Oracle] 오라클 계정 비밀번호 찾기 (0) | 2023.08.30 |
---|---|
[IBATIS] The column name is invalid 에러해결 (0) | 2023.08.03 |
[MySQL] 외래 키 제약조건(Foreign Key Constraint) 끄기 (0) | 2023.02.09 |
[MySQL] 사용자 생성/DB생성/권한부여 (0) | 2022.12.24 |
[MariaDB] MacOS에서 MariaDB설치하기 (1) | 2022.12.24 |