Reputation: 39
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?
Upvotes: 0
Views: 2233
Reputation: 323
I do not know about PHPMyAdmin, but a tool like Apache NiFi can be very useful for such scheduling actions. Just use processors and set scheduling settings. For more information:
Upvotes: 0
Reputation: 15247
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
Upvotes: 4