데이터베이스/SQL: 정리
[SQL] 트리거와 NEW와 OLD 테이블 정리
데브마우스
2024. 1. 5. 12:42
트리거란 무엇인가요?
트리거(Trigger)란 한국어로 방아쇠입니다. 방아쇠를 당기면 총의 총알이 나가듯, SQL에서는 특정 행동을 하면 바로 다른 행동이 일어나도록 만들 수 있습니다.
트리거는 어떻게 사용하나요?
트리거는 테이블의 DML문(INSERT, UPDATE, DELETE 등)의 이벤트가 발생할 때 작동합니다. 테이블에 프로그램 코드를 부착해서 사용합니다.
트리거 코드 형식은 다음과 같습니다.
DELIMITER $$
CREATE TRIGGER 트리거_이름
[BEFORE | AFTER] [INSERT | UPDATE | DELETE]
ON 테이블_이름
FOR EACH ROW
BEGIN
-- 트리거 실행 시 작동되는 코드
END $$
DELIMITER ;
NEW와 OLD 테이블 정리
트리거와 연결된 테이블에서 DML(INSERT, UPDATE, DELETE)을 실행할 때는 임시로 사용되는 시스템 테이블이 2개 있습니다. NEW와 OLD 테이블은 MySQL이 생성하고 관리합니다.
NEW와 OLD 테이블은 사용 시 아래 방법으로 작동합니다.
NEW 작동 방법:
INSERT(데이터) → NEW 테이블(데이터) → 테이블(데이터)
테이블에 데이터가 들어가기 전에 NEW 테이블에 잠시 들어있다가 테이블로 데이터가 들어갑니다.
DELETE 작동 방법:
DELETE(데이터) → 테이블(삭제된 데이터) → OLD 테이블(데이터)
DELETE문을 사용하면 삭제될 데이터가 OLD 테이블에 잠깐 들어있습니다. 그 덕분에 삭제된 후에 OLD.열_이름 형식으로 예전 데이터에 접근할 수 있습니다.
UPDATE 작동 방법:
UPDATE(넣을 데이터, 사라질 데이터) → NEW 테이블(넣을 데이터) → 테이블(넣을 데이터) → ODL 테이블(사라질 데이터)
UPDATE를 사용하면 NEW 테이블과 OLD 테이블을 모두 사용합니다.