mysql定时操作有关时间差的问题

2024-12-26 17:09:54
推荐回答(1个)
回答1:

MySQL从5.1开始支持event功能,类似oracle的job功能。

创建定时器 调用的存储过程

DELIMITER $$

DROP PROCEDURE IF EXISTS e_test $$

CREATE PROCEDURE e_test()

BEGIN

update pcdemo set v_isbag=0 where v_isbag=1 and to_days(now())-to_days(d_lasttime)>=10;

END $$

DELIMITER ;

要使定时起作用 MySQL的常量GLOBAL event_scheduler必须为on或者是1
查看是否开启定时器

SHOW VARIABLES LIKE '%sche%';
开启定时器 0:off 1:on

SET GLOBAL event_scheduler = 1;
创建事件

--每隔一秒自动调用e_test()存储过程

CREATE EVENT IF NOT EXISTS event_test

ON SCHEDULE EVERY 1 SECOND

ON COMPLETION PRESERVE

DO CALL e_test();
开启事件

ALTER EVENT event_test ON

COMPLETION PRESERVE ENABLE;
关闭事件

ALTER EVENT event_test ON

COMPLETION PRESERVE DISABLE;