直接上代码:
1. 创建存储过程
USE `power_autoweb`;
DELIMITER //
DROP PROCEDURE IF EXISTS timer//
CREATE PROCEDURE timer()
BEGIN
UPDATE `power_autoweb` .`power` SET `power`.`term` = `power`. `term` - 1 WHERE `power`.`term` > 0;
END //
2. 设置定时任务调用这个存储过程
DROP EVENT IF EXISTS second_event//
CREATE EVENT second_event
ON SCHEDULE EVERY 5 second
ON COMPLETION PRESERVE DISABLE
DO
BEGIN
CALL timer();
END //
ALTER EVENT second_event ON COMPLETION PRESERVE ENABLE;
有多种写法,这只是我的一种写法。
查看event是否开启 : SHOW VARIABLES LIKE ‘%event_sche%’;
将事件计划开启 : SET GLOBAL event_scheduler = 1;
将事件计划关闭 : SET GLOBAL event_scheduler = 0;
关闭事件任务 : ALTER EVENT eventName ON COMPLETION PRESERVE DISABLE;
开启事件任务 : ALTER EVENT eventName ON COMPLETION PRESERVE ENABLE;
查看事件任务 : SHOW EVENTS ;
2022/8/12 update
- 我实际使用中会比较常用固定在某一天的多少点更新的方式:所以设置定时任务的时候写成:
DROP EVENT IF EXISTS second_event//
CREATE EVENT second_event
ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 0 DAY), INTERVAL 2 HOUR)
ON COMPLETION NOT PRESERVE
ENABLE
DO CALL timer();