트리거(trigger)는 자동으로 수행하여 사용자가 추가 작업을 잊어버리는 실수를 방지해준다. 즉 트리거를 사용하면 데이터에 오류가 발생하는 것을 막을 수 있다. 이런 것을 데이터의 무결성이라고 부르기도 한다.
트리거는 테이블에 DML(Data Manipulation Language) 문(INSERT, UPDATE, DELETE 등)의 이벤트가 발생할 때 작동한다. 테이블에 미리 부착(attach)되는 프로그램 코드라고 생각하면 된다.
트리거는 스토어드 프로시저와 문법이 비슷하지만, CALL 문으로 직접 실행시킬 수는 없고 오직 테이블에 INSERT, UPDATE, DELETE 등의 이벤트가 발생할 경우에만 자동으로 실행된다. 또한 스토어드 프로시저와 달리 트리거에는 IN, OUT 매개변수를 사용할 수 없다.
트리거 사용의 예
USE market_db;
CREATE TABLE IF NOT EXISTS trigger_table (id INT, txt VARCHAR(10));
INSERT INTO trigger_table VALUES(1, '레드벨벳');
INSERT INTO trigger_table VALUES(2, '잇지');
INSERT INTO trigger_table VALUES(3, '블랙핑크');
DELIMITER $$
CREATE TRIGGER myTrigger -- 트리거 이름
AFTER DELETE -- DELETE 후에 작동하도록 지정
ON trigger_table -- 트리거를 부착할 테이블 지정
FOR EACH ROW -- 각 행마다 적용
BEGIN
SET @msg = '가수 그룹이 삭제됨'; -- 트리거 실행 시 작동되는 코드
END $$
DELIMITER ;
DELETE FROM trigger_table WHERE id = 3;
SELECT @msg;
'📟 Database > 혼자 공부하는 SQL' 카테고리의 다른 글
[MySQL] 16. 스토어드 함수와 커서의 개념, 커서(cursor)의 단계별 실습 방법 (5) | 2022.04.10 |
---|---|
[MySQL] 15. 스토어드 프로시저(stored procedure)의 개념과 사용 방법(입출력 매개변수의 활용 방법) (0) | 2022.04.10 |
[MySQL] 14. 인덱스의 생성과 제거 문법(CREATE INDEX, DROP INDEX) (0) | 2022.04.09 |
[MySQL] 13. 인덱스의 내부 작동 원리와 구조, 인덱스에서 데이터 검색하기 (0) | 2022.04.09 |
[MySQL] 12. 인덱스의 개념과 장단점, 클러스터형 인덱스와 보조 인덱스 (0) | 2022.04.09 |