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';