Notice
Recent Posts
Recent Comments
Link
관리 메뉴

데브마우스

[SQL] 트리거와 NEW와 OLD 테이블 정리 본문

데이터베이스/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 테이블을 모두 사용합니다.