Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

어리바리 신입 개발자의 얼렁뚱땅 개발 기록 ✨

23.08.18 / [MySQL] 매일 체크해서 컵 연체 상태로 바꾸기 / 이벤트 스케줄러 본문

TEAM PROJECT

23.08.18 / [MySQL] 매일 체크해서 컵 연체 상태로 바꾸기 / 이벤트 스케줄러

낫쏘링 2023. 8. 18. 17:42
728x90
[ 조건 ]
- 매일 자정 체크
- cup_return_limit_date 컬럼의 시간과 현재 날짜 비교
- return_status 컬럼의 값이 "N"인 행만 선택 (N = 반납하지 않은 상태 / Y = 반납 완료 / F = 연체)
- 만약 컵 반납 예정일을 지났을 경우 return_status 컬럼의 값을 "F" 로 UPDATE 한다.
// 이벤트 스케줄러 ON/OFF 상태 확인하기
SHOW VARIABLES LIKE 'event%';

// 이벤트 스케줄러 ON/OFF
SET GLOBAL event_scheduler = ON;

이벤트 스케줄러를 ON/OFF 할 때 만약 이 에러가 발생한다면?
ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER privilege(s) for this operation
- SUPER 권한을 갖고 있는 아이디 또는 root 아이디로 로그인해서 실행 혹은 권한 부여하면 됨

 

-- 만약 이벤트 이름이 존재하지 않으면 이벤트 스케줄러 생성
CREATE EVENT IF NOT EXISTS cup_overdue

-- 이벤트 시작 날짜와 반복 기간
ON SCHEDULE EVERY 1 DAY
STARTS '2023-08-17 00:00:00' 

-- COMPLETION PRESERVE : 여러 번 반복 실행
-- COMPLETION NOT PRESERVE : 한 번 실행하고 이벤트 종료
ON COMPLETION PRESERVE 
  COMMENT 'cup_rental_limit_overdue' 
  
-- 이벤트 실행
DO 
  UPDATE ks47team03.cup_rental_history
  SET return_status = 'F'
  WHERE cup_return_limit_datetime < CURDATE()
  	AND return_status = 'N';

 

- 반납 예정일이 똑같이 지난 상황 / 미반납 상태인 컵을 빌린 사용자의 상태만 F 로 UPDATE 되었다.

728x90