DML문(INSERT, UPDATE, DELETE)의 이벤트가 발생되면 작동되는 DB객체 중 하나다.
데이터 무결성을 위해 사용된다.
테이블에 부착되는 프로그램 코드라고 생각하면 된다.
트리거는 수정이 안되니 삭제 후 다시 만들어야 한다.
테이블에 INSERT, UPDATE, DELETE 등 작업 후 작동하는 트리
테이블에 INSERT, UPDATE, DELETE 등 작업 전 작동하는 트리
delimiter //
CREATE TRIGGER {trg_name} -- 트리거 이름
{AFTER|BEFORE} {INSERT|UPDATE|DELETE} -- 어떤 이벤트가 발생했을 때 작동될지 지정하는 곳
ON {table_name} -- 트리거를 부착할 테이블
FOR EACH ROW -- 각 행마다 적용시킨다.
{FOLLOWS|PRECEDES} -- 다른 트리거보다 먼저 혹은 나중에 수행되는 것을 지정
BEGIN
SET @msg = concat('\'',old.data,'\'', '삭제됨');-- old.data 이전 데이터
END //
delimiter ;
-- 트리거
CREATE DATABASE IF NOT EXISTS testdb;
use testdb;
create table if not EXISTS testtbl (
id int, txt VARCHAR(10));
insert into testtbl values(1,'가가');
insert into testtbl values(2,'나나');
insert into testtbl values(3,'다다');
-- testtbl 에 트리거 부착
DROP TRIGGER IF EXISTS testTrg;
delimiter //
CREATE TRIGGER testTrg -- 트리거 이름
AFTER DELETE -- 어떤 이벤트가 발생했을 때 작동될지 지정하는 곳(여기서는 삭제)
ON testTbl -- 트리거를 부착할 테이블
FOR EACH ROW -- 각 행마다 적용시킨다.
BEGIN
SET @msg = concat('\'',old.txt,'\'', '삭제됨');
END //
delimiter ;
set @msg='';
delete from testtbl where id = 2;
select @msg;