mysql 60일 뒤에 데이터 자동 삭제

우진·2024년 1월 17일
0

📜 배경

  1. 유실물 관리 프로그램을 만들던 중.
  2. 등록된 유실물 정보를 삭제하거나, 이관처리(본인인도, 타역/경찰서이관)하였을 때, 해당 정보는 각각의 테이블로 이동하게 된다.
  3. 이 정보를 일정시간동안 저장하고 있다가 삭제하는 기능을 구현하려고 하였다.

🔨 mysql schedule

  • mysql의 schedule 기능을 이용하여 구현할수 있었다.

1. event scheduler 상태확인

SHOW VARIABLES LIKE 'event%';

2. 만약 off라면 on 으로 변경

SET GLOBAL event_scheduler = ON ;

3. event scheduler 리스트 확인

SELECT * FROM information_schema.events;

4. event scheduler 생성

create event '이벤트 이름'
on schedule every 1 day => 작동주기
comment 코멘트
do
쿼리문;

🎇 curdate() => 현재 날짜(YYYY-MM-DD 형식)
🎇 date_sub(date, INTERVAL value interval) => 날짜에서 시간 간격을 빼서 날짜로 출력해주는 함수
🎇 매일 'del' 테이블에서 현재 날짜에서 60일 전의 날짜의 데이터를 삭제한다.

5. event scheduler 삭제

DROP event '이벤트 이름';

🔎 해결

  • 본인인도, 타역이관, 경탈이관, 삭제 테이블 각각에 총 4개의 스케줄을 생성하였다.
  • 이로써 각 테이블의 정보는 60일간만 저장되며, 이후 자동 삭제된다.

https://amazinghajin.tistory.com/40
https://miniweb4u.tistory.com/91
https://m.blog.naver.com/youngchanmm/221406621420
https://www.w3schools.com/sql/func_mysql_date_sub.asp
https://www.w3schools.com/sql/func_mysql_curdate.asp

profile
직각맨

0개의 댓글