본문 바로가기
개발 업무(코딩)-개발자였을때 썼던..

MYSQL TRIGGER(트리거)

by 주용사 2023. 1. 9.
728x90

테이블에 변화가 올때마다 기록을 남기는게 필요했다.

TC5002MT는 원본테이블

TC5002TG는 트리거용 테이블(기록용)

두 테이블의 차이는 TC5002TG에 seq라는 AUTO_INCREMENT가 있다는 점과 함수명을 남기기위한 FUNC가 있다는 점이 차이다. (PK차이)

데이터내용을 전부 추가하고 싶으면 INSERT에 다 넣어주면된다.

샘플 코드만 있으니 자세한건 다른 블로그 참고바람

BEFORE 와 AFTER, OLD와 NEW,

UPDATE INSERT DELETE 따로 해줘야한다는 점.

짜증나는건 트리거 잘못만들면 기존에 작동했던 기능들이 안될수도 있다.(기능이 안된다는 것은 기존의 테이블에 연관된 select이나 insert등의 기능이다.)

DELIMITER $$
CREATE TRIGGER TC5002MT_TRIGGER_INSERT 
AFTER INSERT ON TC5002MT 
FOR EACH ROW 
BEGIN 
INSERT INTO TC5002TG SET FUNC = "INSERT", ACCOUNT = NEW.ACCOUNT;
END$$ 
DELIMITER ;

DELIMITER $$
CREATE TRIGGER TC5002MT_TRIGGER_UPDATE
AFTER UPDATE ON TC5002MT 
FOR EACH ROW 
BEGIN 
INSERT INTO TC5002TG SET FUNC = "UPDATE", ACCOUNT = NEW.ACCOUNT;
END$$ 
DELIMITER ;

DELIMITER $$
CREATE TRIGGER TC5002MT_TRIGGER_DELETE
BEFORE DELETE ON TC5002MT 
FOR EACH ROW 
BEGIN 
INSERT INTO TC5002TG SET FUNC = "DELETE", ACCOUNT = OLD.ACCOUNT;
END$$ 
DELIMITER ;
​
728x90