MYSQL 트리거
- 트리거 정의
- 특정 조건이 만족하면 저절로 실행되는 일종의 장치
- 프로시저나 함수와는 다르게 한 번 설정을 하면 동작을 항상 감시하고 있다가 조건에 해당하는 동작이 수행되는 순간 실행되는 특징을 가진다.
delimiter $$
create trigger 트리거명
{Before | After} {INSERT | UPDATE | DELETE}
ON table_name FOR EACH ROW
BEGIN
쿼리문
END $$
delimiter ;
- 종류
- 행 트리거 : 테이블의 행이 각각 실행된다.
- 문장 트리거 : INSERT, DELETE, UPDATE 문에 대해서 한 번만 실행된다.
- 속성
- 트리거 작동 시점
- After : 이벤트 발생 이후 트리거 실행
- Before : 이번테 발생 이전 트리거 실행
- old : 바뀌기 이전 데이터에 접근
- new : 새 데이터에 접근
- 예시
create table deptUpdate(
oldname varchar(30),
newname varchar(30)
);
select * from deptUpdate;
delimiter $$
create trigger trigger_test
before update
on departments
for each row
begin
insert into deptUpdate(oldname, newname)
values(old.department_name, new.department_name);
end$$
delimiter ;
select * from deptUpdate;
update departments
set department_name = '총괄본부'
where department_id = '300';
select * from departments;