1 hour 단위로 쿼리 수행
DELIMITER //
CREATE EVENT IF NOT EXISTS {생성할 스케쥴러명}
ON SCHEDULE EVERY 1 HOUR
STARTS CURRENT_TIMESTAMP
DO
SELECT s.*
FROM {쿼리가 실행 될 테이블} s
WHERE s.category = '{조건대상}'
AND s.menu IN (
SELECT menu
FROM {쿼리가 실행 될 테이블}
WHERE category_id = '{조건대상}'
GROUP BY menu
HAVING SUM(-나간돈) + SUM(들어온돈) <> SUM(오버된금액)
OR (
SUM(COALESCE(오버레이된 금액, 0) > 0
AND NOT (
ABS(ABS(SUM(오버된금액)) / MAX(나눌 인원 수) - MAX( COALESCE(오버레이된 금액, 0))) <= 1
)
)
)
//
DELIMITER ;
- 이벤트 스케쥴러에서 CREATE EVENT IF NOT EXISTS {생성할 스케쥴러명}
- {생성할 스케쥴러명} 이라는 이름의 이벤트가
ㄴ 실제 사용 할 스케쥴러명으로 변경 필요
- 이미 있다면: CREATE EVENT 명령어 무시하고 이벤트 그대로 유지
- 매 시간마다 ON SCHEDULE EVERY 1 HOUR
- {쿼리가 실행 될 테이블} 테이블에서 해당 쿼리를 실행
ㄴ 실제 쿼리 실행 될 테이블명으로 변경
- DELIMITER 구분자 재정의
- SQL 쿼리문 구분하는 데 사용 (이벤트 스케줄러 생성 및 설정, 테이블에서 쿼리 실행)