트리거 트리거
– 테이블과 관련하여 이벤트가 발생할 때 트리거되는 프로시저와 같은 데이터베이스 개체입니다.
– 테이블 관련 이벤트는 테이블 수정(업데이트, 삭제, 삽입)과 동일
관련 이벤트를 말합니다.
drop table if exists test2;
create table test2(num int);
insert into test2 values(1),(2),(3);
select * from test2;
set @before_delete=0; -- 변수 초기화
drop trigger if exists trig_delete; -- 기존 트리거 제거
delimiter $$
create trigger trig_delete 트리거 생성
before delete
on test2
for each row -- delete실행전 test2에 대해서 각 행마다 수행
begin
set @before_delete = @before_delete + 1 ; -- 트리거 실행될때마다 1씩 증가
delimiter ;
num=3인 test2에서 삭제;
@before_delete 선택;
=> 삭제된 데이터만큼 before_delete의 개수가 증가합니다.
t1 테이블에 insert되는 경우
t2 테이블에 자동으로 데이터 insert 하기
create database db01;
use db01;
create table t1(id int, name varchar(30));
create table t2(addr varchar(30));
-- 트리거 시작 --
drop trigger if exists trig_insert;
delimiter $$
create trigger trig_insert
before insert
on t1
for each row
begin
insert into t2 values("광주");
end $$
delimiter ;
-- 트리거 끝 --
<확인>
insert into t1 values(1,'홍길동');
select * from t1;
select * from t2;

DELIMITER //
CREATE TRIGGER removed_name
AFTER DELETE
ON t1
FOR EACH ROW
BEGIN
INSERT INTO t2
VALUES (OLD.id, OLD.name, OLD.address, CURDATE() );
END
// DELIMITER ;
delete from t1 where id=1;
select * from t2;
delete from t1 where id=2;
select * from t2;
delete from t1 where id=3;
select * from t2;
※ OLD 테이블
– 삭제 및 업데이트 작업을 수행함에 따라 삭제 또는 변경 전의 이전 값이 임시로 저장됩니다.
– 이전 데이터를 참조하려면 OLD 테이블을 참조하십시오.

Create table t1(id int);
create table t2(name varchar(30));
create table t3(addr varchar(30));
delimiter //
create trigger trig_t1_t2
before insert
on t1
for each row
begin
insert into t2 values("홍길동");
end //
delimiter ;
delimiter $$
create trigger trig_t2_t3
before insert
on t2
for each row
begin
insert into t3 values("부산");
end $$
delimiter ;
insert into t1 values (1);
select * from t1;
select * from t2;
select * from t3;