SQL/MySQL

[MySQL] 트리거(Trigger)

jane.dev 2021. 7. 24. 14:51
반응형
트리거(Trigger)
DBMS에서 특정 사건 발생 시 자동으로 일련의 과정이 수행되는 프로시저로 사용자가 따로 호출할 필요가 없음
데이터 변경 시 무결성에 문제가 생길 때, 이를 보완할 수 있도록 트리거를 설정하면 무결성을 유지시킬 수 있음
장점 : 프로시저와 더불어 데이터베이스 내의 업무규칙을 구현 가능
단점: 테이블 선언 시 정의한 제약조건에 비해 성능이 저하

 

문법

DELIMITER //
CREATE TRIGGER 트리거명
    BEFORE / AFTER (실행시점) 실행로직	# 실행로직은 어떤 구문이 들어오면 처리할 것인가
    ON 트리거적용테이블
    FOR EACH ROW
BEGIN
	트리거 실행시 작동될 코드
END //
DELIMITER ;

 

예제)

회원이 탈퇴를 진행하면 회원 관리 테이블에서 탈퇴 회원 관리 테이블으로 이동하는 트리거

트리거 적용 테이블 작성

CREATE TABLE userAdmin(				# 회원 관리 테이블
    uId VARCHAR(20),
    uPw VARCHAR(20)
);

INSERT INTO userAdmin VALUES ('AAA', '111'),	# 회원 데이터 삽입
                             ('BBB', '222'),
                             ('CCC', '333'),
                             ('DDD', '444');

CREATE TABLE userOutAdmin(			# 탈퇴회원 관리 테이블
    uId VARCHAR(20),
    uPw VARCHAR(20),
    deleteDate DATE
);

 

트리거 생성

DELIMITER //
CREATE TRIGGER userOut
    AFTER DELETE		# 데이터 삭제 후
    ON userAdmin		# userAdmin 테이블에
    FOR EACH ROW
BEGIN
    SET @deleteMsg = '회원이 탈퇴를 진행했습니다.';
    INSERT INTO userAminOut VALUES (OLD.uid, OLD.upw, NOW());
    
END //
DELIMITER ;

 

데이터 삭제

DELETE FROM userAdmin WHERE uId = 'AAA';