트리거

선봉·2023년 3월 10일
0

MySQL

목록 보기
31/36

트리거

DML문(INSERT, UPDATE, DELETE)의 이벤트가 발생되면 작동되는 DB객체 중 하나다.

데이터 무결성을 위해 사용된다.

테이블에 부착되는 프로그램 코드라고 생각하면 된다.

트리거는 수정이 안되니 삭제 후 다시 만들어야 한다.

AFTER트리거

테이블에 INSERT, UPDATE, DELETE 등 작업 후 작동하는 트리

BEFORE 트리거

테이블에 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;

profile
백엔드 개발자

0개의 댓글

관련 채용 정보