Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 지정된 시간에 시작하고 종료되는 반복 이벤트 생성하는 방법

MySQL 반복 이벤트란?

반복 이벤트(Recurring Event)는 정해진 시간 간격마다 주기적으로 실행되다가, 지정된 시간이 되면 자동으로 종료되는 이벤트를 말합니다. MySQL에서는 CREATE EVENT 문에 EVERY, STARTS, ENDS 절을 함께 사용하여 이러한 이벤트를 손쉽게 만들 수 있습니다.

반복 이벤트 생성 예제

아래 예제는 1분마다 실행되고, 시작 시점으로부터 1시간이 지난 후 자동으로 종료되는 이벤트를 생성하는 코드입니다.

mysql> CREATE EVENT testing_event10 ON SCHEDULE EVERY 1 MINUTE STARTS CURRENT_TIMESTAMP ENDS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO INSERT INTO event_message(message,generated_at) Values('Recrring evnts',NOW());
Query OK, 0 rows affected (0.00 sec)

구문 핵심 요소 살펴보기

  • ON SCHEDULE EVERY 1 MINUTE: 이벤트가 1분 간격으로 반복 실행되도록 지정합니다.
  • STARTS CURRENT_TIMESTAMP: 이벤트가 현재 시점부터 시작됨을 의미합니다.
  • ENDS CURRENT_TIMESTAMP + INTERVAL 1 HOUR: 시작 시점으로부터 1시간 후에 이벤트가 종료되도록 설정합니다.
  • DO INSERT INTO ...: 이벤트가 실행될 때마다 수행할 실제 작업을 정의합니다. 여기서는 메시지와 현재 시간을 테이블에 삽입합니다.

실행 결과 확인

이벤트가 정상적으로 동작하면 event_message 테이블에 아래와 같이 1분 간격으로 데이터가 쌓이는 것을 확인할 수 있습니다.

mysql> Select * from event_message;
+----+----------------+---------------------+
| ID | MESSAGE        | Generated_at        |
+----+----------------+---------------------+
| 1  | Hello          | 2017-11-22 17:05:22 |
| 2  | Hi             | 2017-11-22 17:08:37 |
| 3  | Recrring evnts | 2017-11-22 20:14:00 |
| 4  | Recrring evnts | 2017-11-22 20:15:00 |
| 5  | Recrring evnts | 2017-11-22 20:16:00 |
| 6  | Recrring evnts | 2017-11-22 20:17:00 |
| 7  | Recrring evnts | 2017-11-22 20:18:00 |
| 8  | Recrring evnts | 2017-11-22 20:19:00 |
+----+----------------+---------------------+
8 rows in set (0.00 sec)

참고 사항

MySQL에서 이벤트가 정상적으로 동작하려면 이벤트 스케줄러(Event Scheduler)가 활성화되어 있어야 합니다. 다음 명령으로 상태를 확인하고 활성화할 수 있습니다.

SET GLOBAL event_scheduler = ON;

이처럼 STARTSENDS 절을 조합하면 원하는 시작 시점과 종료 시점을 가진 반복 이벤트를 유연하게 관리할 수 있습니다.