일회성(one-time) 이벤트란 특정 일정 시점에 단 한 번만 실행되는 이벤트를 의미합니다. MySQL에서는 CREATE EVENT 문과 ON SCHEDULE AT 절을 조합하여 이러한 이벤트를 손쉽게 만들 수 있습니다.
아래 예제는 현재 시각(CURRENT_TIMESTAMP)에 즉시 실행되는 일회성 이벤트를 생성하는 전체 과정을 보여줍니다.
예제
먼저 이벤트 실행 결과를 저장할 테이블을 생성합니다.
mysql> CREATE TABLE event_message(ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT, MESSAGE VARCHAR(255) NOT NULL, Generated_at DATETIME NOT NULL); Query OK, 0 rows affected (0.61 sec)
그다음 CURRENT_TIMESTAMP를 기준으로 하여, 이벤트가 생성되는 즉시 실행되도록 이벤트를 만듭니다.
mysql> CREATE EVENT testing_event ON SCHEDULE AT CURRENT_TIMESTAMP DO INSERT INTO event_message(message, generated_at) VALUES('Hello', NOW());
Query OK, 0 rows affected (0.00 sec)이벤트가 실행된 직후 테이블을 조회하면 다음과 같이 데이터가 자동으로 삽입되어 있음을 확인할 수 있습니다.
mysql> SELECT * FROM event_message; +----+---------+---------------------+ | ID | MESSAGE | Generated_at | +----+---------+---------------------+ | 1 | Hello | 2017-11-22 17:05:22 | +----+---------+---------------------+ 1 row in set (0.00 sec)
위 결과에서 볼 수 있듯이, 이벤트가 생성되는 순간(현재 시각) 자동으로 한 번 실행되어 event_message 테이블에 'Hello'라는 메시지와 현재 시간이 기록되었습니다.
참고로 일회성 이벤트는 실행이 완료된 후에도 자동으로 삭제되지 않습니다. 따라서 더 이상 필요하지 않은 이벤트는 DROP EVENT 문을 사용하여 직접 제거하는 것이 좋습니다.