I am using a MySql DataBase and I want to know if there are any methods to modify a value of a column every x minutes/hours/days.
For example, I want to execute the following query every 5 minutes, UPDATE table SET x=0;
.
Could I set an event or something like this from the PHPMyAdmin interface?
Advertisement
Answer
I’m not aware about how to use PHPMyAdmin interface to create events, however, this can be done in “pure” SQL :
CREATE EVENT IF NOT EXISTS your_event_name
ON SCHEDULE EVERY 5 MINUTE
DO UPDATE table SET x=0;
About the part ON SCHEDULE EVERY 5 MINUTE
, this will execute the event now, and then every 5 minutes, forever.
If you want to delay the execution, you can add STARTS
after the EVERY
statement :
-- This will delay the first execution in 1 hour
ON SCHEDULE EVERY 5 MINUTE STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR
You can define when the EVENT should stop working using ENDS
:
-- This will end the event in 1 week
ON SCHEDULE EVERY 5 MINUTE ENDS CURRENT_TIMESTAMP + INTERVAL 1 WEEK
Of course, you can combine both STARTS
and ENDS
-- This will end the event in 1 week
ON SCHEDULE
EVERY 5 MINUTE -- Play every 5 minutes
STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR -- Start in 1 hour
ENDS CURRENT_TIMESTAMP + INTERVAL 1 WEEK -- End in 1 week
If you have more than 1 query to perform in the event, you need to wrap the instructions inside BEGIN
/ END
:
DELIMITER $$
CREATE EVENT IF NOT EXISTS your_event_name
ON SCHEDULE EVERY 5 MINUTE
DO
BEGIN
UPDATE table1 SET x=0;
UPDATE table2 SET foo='bar';
END $$
DELIMITER ;
For more informations, check the documentation