본문 바로가기

DB

[MySQL] Trigger

Trigger

  • 촉발하다 == callback
delimiter $$
    create trigger 트리거명
        { befor | after }    { insert | update | delete }
        on 테이블명
        for each row

    begin
        쿼리문
    end $$
delimiter ;

 

예제)

-- 저장 (검사) 테이블
create table dept_update(
	oldname varchar(30),
	newname varchar(30)
);

trigger 를 검사하는 테이블 생성

delimiter $$
create trigger trigger_test
	before update
	on departments
	for each row
	begin
		insert into dept_update(oldname, newname) values(old.department_name, new.department_name);
	end $$

delimiter ;

update 하기 전(before)에 trigger가 발생. begin - end 까지의 코드를 실행한다. ( 해당 예제에서는 insert문 )

old.department_name, new.department_name은 mysql에서 제공하는 trigger 변수

 

update departments set department_name = '총괄본부' where department_id = 300;
select * from dept_update;

실행 결과

'DB' 카테고리의 다른 글

[MySQL] Sequence  (0) 2022.06.21
[MySQL] Function  (0) 2022.06.21
[MySQL] 제어문, Cursor  (0) 2022.06.21
[MySQL] PL  (0) 2022.06.21
[MySQL] View  (0) 2022.06.20