MySQL Scheduled Event
MySQL Scheduled Event
MySQL Scheduled Event
Summary: About MySQL event scheduler and how to create MySQL events to automate
database tasks.
A MySQL event is a task that runs based on a predefined schedule therefore sometimes it is
referred to as a scheduled event. MySQL event is also known as “temporal trigger” because it
is triggered by time, not by table update like a trigger. A MySQL event is similar to a cron
job in UNIX or a task scheduler in Windows.
You can use MySQL events in many cases such as optimizing database tables, cleaning up
logs, archiving data, or generate complex reports during off-peak time.
SHOW PROCESSLIST;
By default, the event scheduler thread is not enabled. To enable and start the event scheduler
thread, you need to execute the following command:
Now to see the status of event scheduler thread, you execute the SHOW PROCESSLIST
command again.
SHOW PROCESSLIST;
To disable and stop the event the event scheduler thread, you execute the SET GLOBAL
command with value of the event_scheduler is OFF:
A stored procedure is only executed when it is invoked directly; a trigger is executed when an
event associated with a table such as an insert, update, or delete event occurs while an event
can be executed at once or more regular intervals.
To create and schedule a new event, you use the CREATE EVENT statement as follows:
First, you specify the event name after the CREATE EVENT clause. The event name
must be unique within a database schema.
Second, you put a schedule after the ON SCHEDULE clause. If the event is a one-time
event, you use the syntax:AT timestamp [+ INTERVAL] If the event is a recurring
event, you use the EVERY clause:EVERY interval STARTS timestamp [+INTERVAL]
ENDS timestamp [+INTERVAL]
Third, you place the SQL statements after the DO keyword. It is important to notice
that you can call a stored procedure inside the body of the event. In case you have
compound SQL statements, you can wrap them in a BEGIN END block.
Let’s look at few examples of creating events to understand the syntax above.
To create and schedule a new one-time event that inserts a message into a table called
messages you do the following steps:.
First, create a new table named messages by using the CREATE TABLE statement as follows:
To shows all events of a database schema, you use the following statement:
We don’t see any row returned because an event is automatically dropped when it is expired.
In our case, it is a one-time event and expired when its execution completed.
To change this behavior, you can use the ON COMPLETION PRESERVE clause. The following
statement creates another one-time event that is executed after its creation time 1 minute and
not dropped after execution.
Wait for 1 minute, check the messages table, another record was added:
If we execute the SHOW EVENTS statement again, we see the event is there because the effect
of the ON COMPLETION PRESERVE clause:
Notice that we used STARTS and ENDS clauses to define expiration period for the event. You
can test this recurring event by waiting for few minutes and check the messages table.