Live Brilliant

[MYSQL] event(스케줄러) 적용 데이터 삭제 본문

개발은 핵찜이야/DATABASE

[MYSQL] event(스케줄러) 적용 데이터 삭제

주인정 2015. 1. 26. 11:31

1. 정기적으로 데이터 삭제할 일이 생겼다.

ex) 개인정보를 수집기간이 6개월이고 기간이지난 개인정보는 삭제해야한다.

mysql event를 통해 처리해보자


/* uncomment the example below you want to use */


-- scheduleexample 1: 한 번 실행


  --  AT 'YYYY-MM-DD HH:MM.SS'/CURRENT_TIMESTAMP { + INTERVAL 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...] }


-- scheduleexample 2: 반복 실행


  -- EVERY 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...]


-- scheduleexample 3: 지정된 시작 시간, 종료 시간 및 간격에 맞게 실행

  /*EVERY 1  [HOUR|MONTH|WEEK|DAY|MINUTE|...]


  STARTS CURRENT_TIMESTAMP/'YYYY-MM-DD HH:MM.SS' { + INTERVAL 1[HOUR|MONTH|WEEK|DAY|MINUTE|...] }


  ENDS CURRENT_TIMESTAMP/'YYYY-MM-DD HH:MM.SS' { + INTERVAL 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...] } */


#6개월이 지난 데이터 조회 쿼리 

SELECT * FROM USER_DATA 

WHERE REG_DATE < DATE_SUB(DATE_FORMAT(NOW(),'%Y-%m-%d'),INTERVAL 6 MONTH) 

ORDER BY NO DESC;



#이제 몇시를 기준으로 반복 실행할지 지정해야한다.

- 2015년 1월1일 01시부터  1일간격으로 반복실행하여 6개월이 지난 데이터를 삭제한다.

DELIMITER $$


CREATE /*[DEFINER = { user | CURRENT_USER }]*/ EVENT `test`.`del_userdb`


ON SCHEDULE  


-- 반복실행 (유저디비 6개월 지난 데이터 삭제 스케쥴러 )

EVERY 1 DAY

-- 2015년 1월1일 01시 시작 

STARTS '2015-01-01 01:00:00'

ENABLE

DO

BEGIN    

DELETE FROM USER_DATA WHERE REG_DATE < DATE_SUB(DATE_FORMAT(NOW(),'%Y-%m-%d'),INTERVAL 2 YEAR);

END$$


DELIMITER ;


Comments