Photo by Estée Janssens / Unsplash

MySQL Event Scheduler

MySQL Jul 31, 2022

This post briefly documents the process of using the Event Scheduler which manages the scheduling and execution of events, that is, tasks that run according to a schedule.

Introduction

MySQL is an open-source relational database management system (RDBMS). A relational database organizes data into one or more data tables in which data types may be related to each other; these relations help structure the data. SQL is a language programmers use to create, modify and extract data from the relational database, as well as control user access to the database.

Minimum Software Requirements

  • MySQL
  • MySQL Workbench (Optional)

Goals

  • Enable event scheduler
  • List existing events from a particular schema
  • Create table for example
  • Congigure Event Scheduler
    • One-time event
    • One-time event with delayed start
    • Recurring-event with end condition
  • Drop event scheduler

Enable event scheduler

SET GLOBAL event_scheduler = ON;

List existing events from a particular schema.

SHOW EVENTS 
FROM SCHEMA_NAME;

events are automatically dropped when it expires

Create table for example

create a sample table

CREATE TABLE event_scheduler_test (
    id INT PRIMARY KEY AUTO_INCREMENT,
    my_data VARCHAR(255) NOT NULL,
    created_at DATETIME NOT NULL
);
  • One-time event
CREATE EVENT IF NOT EXISTS event_scheduler_test_event_01
ON SCHEDULE AT CURRENT_TIMESTAMP
ON COMPLETION PRESERVE -- keeps the event even after it has expired
DO
  INSERT INTO my_schema.event_scheduler_test(my_data,created_at)
  VALUES('My Event Scheduler Test Data 1',NOW());

ON COMPLETION PRESERVE, keeps the event even after it has expired

  • One-time event with delayed start
CREATE EVENT event_scheduler_test_event_02
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
ON COMPLETION PRESERVE
DO
  INSERT INTO my_schema.event_scheduler_test(my_data,created_at)
  VALUES('My Event Scheduler Test Data 2',NOW());
  • Recurring-event with end condition
CREATE EVENT event_scheduler_test_event_03	
ON SCHEDULE EVERY 1 MINUTE					
STARTS CURRENT_TIMESTAMP					
ENDS CURRENT_TIMESTAMP + INTERVAL 1 HOUR	
DO
   INSERT INTO mis_dashboard.event_scheduler_test(my_data,created_at)
   VALUES('My Event Scheduler Test Data 3',NOW());

CREATE EVENT event_scheduler_test_event_03 :event name

ON SCHEDULE EVERY 1 MINUTE :frequency

STARTS CURRENT_TIMESTAMP :event start condition

ENDS CURRENT_TIMESTAMP + INTERVAL 1 HOUR :event expiration period

  • Drop event scheduler
DROP EVENT event_scheduler_test_event_03;

Notes

SHOW PROCESSLIST;

Tags

Anantha Raju C

| Poetry | Music | Cinema | Books | Visual Art | Software Engineering |