728x90

목동코딩학원 :

처음에는 간단하게 본인인증 받아서 회원관리만 하면 된다고 생각한 웹사이트였는데,

막상 운영을 해서 입력을 받아보니 회원들의 내용 수정이 의외로 많다는 걸 알았습니다.

특히 이름이 변경되는 경우가 있기에 무엇을 수정했는지 로그를 작성할 필요가 생겨서

오래만에 Trigger를 만들어 봤습니다.

간단하게 작동을 하도록 했습니다.

enroll 테이블의 내용이 수정되기 전에 enrollBefore 테이블에 기존 정보를 Insert 하는 정도입니다

아래의 트리거를 작성하여서 MySql에서 작동시킨후 약 1시간뒤에 DB에 가서 확인해보니, 역시

수정한 내역이 많았습니다.

아! 이렇게 많았구나 하는 생각이 들었습니다.

마치 예전에 집앞에 세워둔 고장난 자전거가 있었는데, 아침에 일어나니 사라졌을때, CCTV를 획인하니

새벽에 술취한 사람이 고장난 자전거를 끌고 가는 장면을 확인 하고 후련했던거 처럼 기분이 좋았습니다. ㅎㅎ

30대에 오라클로 시스템 구축할때를 빼고는 간단하지만 오랜만에 트리거 작업을 했습니다.

별다른 프로그램의 수정이 없이 작업이 되어서 게으른 개발자에게는 큰 축복입니다.

CREATE DEFINER=`appnet_remote`@`%` TRIGGER `enrollchange` 
BEFORE UPDATE ON `enroll` 
FOR EACH ROW BEGIN
INSERT INTO enrollbefore (
	Id, 
	Name, 
	Birthdate, 
	Mobile, 
	Email, 
	BludType, 
	Religion, 
	Career, 
	zip,
	addr1,
	addr2,
	Recommender,
	RecommenderMobile,
	ActivityArea,
	Job,
	Interest,
	MajorField,
	Message,
	sms,
	RegiDate
	) VALUES( 
	OLD.Id, 
	OLD.Name, 
	OLD.Birthdate, 
	OLD.Mobile, 
	OLD.Email, 
	OLD.BludType, 
	OLD.Religion, 
	OLD.Career, 
	OLD.zip,
	OLD.addr1,
	OLD.addr2,
	OLD.Recommender,
	OLD.RecommenderMobile,
	OLD.ActivityArea,
	OLD.Job,
	OLD.Interest,
	OLD.MajorField,
	OLD.Message,
	0,
	OLD.RegiDate
	);
END

다음과 같이 작성하면 입력을 우선으로 하고 이미 입력된 자료가 있으면 update를 하는 방식이다

INSERT INTO t2(id,pass) VALUES (NEW.id, NEW.pass) ON DUPLICATE KEY UPDATE pass=NEW.pass;

 

목동코딩학원 지금은 10살이지만 아두이노를 좋아하는 초등생

 

728x90

+ Recent posts