**
Mysql定时任务
**
很多时候,根据项目的需求,都需要定时去修改数据库中的数据,比如说,用户会员vip到期了,则需要修改用户的等级状态数据等等…
1创建定时任务,首先创建一个需要执行的存储过程
--判断是否存在,如果操作就直接删除掉
DROP PROCEDURE IF EXISTS p_pe_sort;
--创建存储过程
CREATE PROCEDURE p_pe_sort()
BEGIN
-- ** 执行语句 (多条则以“;”分开,最后需以“;”结尾)**--
UPDATE t_publish_extended
SET sort = 0, deliverystate = 1
WHERE NOW() NOT BETWEEN starttime AND endtime;
-- ** 执行语句 (多条则以“;”分开,最后需以“;”结尾)**--
END
2开始创建定时任务
CREATE EVENT IF NOT EXISTS e_pe_sort
-- 一分钟调起一次
ON SCHEDULE EVERY 1 MINUTE
-- ** 当事件不会再发生的情况下,删除事件(注意特定时间执行的事件,如果设置了该参数,执行完毕后,事件将被删除,不想删除的话可以设置成ON COMPLETION PRESERVE ** --
ON COMPLETION [NOT] PRESERVE
-- 需调起的方法
DO CALL p_pe_sort();
3开启关闭事件
-- 关闭事件
ALTER EVENT e_pe_sort ON COMPLETION PRESERVE ENABLE;
-- 开启事件
ALTER EVENT e_pe_sort ON COMPLETION PRESERVE DISABLE;
这样之后,可能大家还会看到事件没有启动,查看任务则提示如下
—- mysql‘事件计划已关闭。事件只能在服务器启动并开启事件计划时才能处理。’的警告,这时我们就要进行第四步
4查询event是否开启,如果没有开启,则进行第五步
show variables like '%sche%';
5通过执行下列语句,来开启event_scheduler
set global event_scheduler =1;
或者
set global event_scheduler=on;