mysql能够实现定时触发功能,好比说定于某某时间mysql数据库作什么工做,或每隔多长时间作什么工做。mysql
第二种状况应用仍是比较广的,好比说我但愿天天检查一下个人数据信息,超过一个月的无用信息清除以腾出空间供其余存储数据使用;或者相隔一段时间更新一下数据等等。sql
下面讨论下这种状况,给出一个例子供你们参考:数据库
1.首先定义一个存储过程取名为e_test,注意竖线(“|”)必定不能丢事件
DELIMITER |event
DROP PROCEDURE IF EXISTS e_test |
CREATE PROCEDURE e_test()test
BEGIN
update order set status=1 where to_days(now())-TO_DAYS(date)>=1 and status=0;date
END定时器
|数据
假设有一个order表,而且表里有一个status字段和一个date字段,如今将date中的时间距如今时间超过1天的而且状态status=0的这条数据的状态status改为1。存储过程
2.建立定时器取名为event_test
SET GLOBAL event_scheduler = 1;
CREATE EVENT IF NOT EXISTS event_test
ON SCHEDULE EVERY 1 SECOND
ON COMPLETION PRESERVE
DO CALL e_test();
建立一个定时器,每间隔1秒触发一次事件,即每一个一秒执行一次上面定义的e_test这个存储过程。
3.这个是最简单可是也是最重要的,咱们要手动的启动这个定时器,要否则是无法工做的。
ALTER EVENT event_test ON
COMPLETION PRESERVE ENABLE;
最后提醒一点,建立存储过程与建立定时器代码要分开执行,不然会报错,暂时还不知道为何,我的觉得这个多是数据库建立好存储过程须要必定的缓冲 时间来作好准备,咱们要认为的给他留出这个时间。固然这个时间对数据库来讲是必定的时间,可是对于咱们来讲仅仅是眨眼之间的功夫,只要分开两次执行时间就 足够了。