MYSQL 트리거

O0·2022년 6월 21일
0

MYSQL

목록 보기
5/6
post-thumbnail

MYSQL 트리거


  1. 트리거 정의
  • 특정 조건이 만족하면 저절로 실행되는 일종의 장치
  • 프로시저나 함수와는 다르게 한 번 설정을 하면 동작을 항상 감시하고 있다가 조건에 해당하는 동작이 수행되는 순간 실행되는 특징을 가진다.
    delimiter $$
		create trigger 트리거명
			{Before | After} {INSERT | UPDATE | DELETE}
            ON table_name FOR EACH ROW
		BEGIN
			쿼리문
        END $$
	delimiter ; 
    //임시저장, 데이터 복구, 채팅로그 등 다양한 곳에서 활용
    //select 불가. delete, insert, update
  1. 종류
  • 행 트리거 : 테이블의 행이 각각 실행된다.
  • 문장 트리거 : INSERT, DELETE, UPDATE 문에 대해서 한 번만 실행된다.
  1. 속성
  • 트리거 작동 시점
    • After : 이벤트 발생 이후 트리거 실행
    • Before : 이번테 발생 이전 트리거 실행
  • old : 바뀌기 이전 데이터에 접근
  • new : 새 데이터에 접근
  1. 예시
-- 저장(검사) 테이블
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;
profile
O0

0개의 댓글