CREATE EVENT mytest ON SCHEDULE EVERY 1 minute
DO
//sql语句
UPDATE user_vip SET `status`=0 where end_time <now() and `status`=1
完成上面的定时任务的创建之后还需要开启时间
开启所有的定时任务事件
ALTER EVENT eventJob ON COMPLETION PRESERVE ENABLE;
开启指定的定时任务时间, test_event为其中一个定时任务
alter event test_event on completion preserve enable;
停止定时器
SET GLOBAL event_scheduler = 0;
关闭所有的定时任务
ALTER EVENT eventJob ON COMPLETION PRESERVE DISABLE;
关闭指定的定时任务
ALTER EVENT test_event ON COMPLETION PRESERVE DISABLE;
一个定时定点的任务
创建一个名为test的sql语句
//test为定义的一个sql语句
CREATE PROCEDURE test()
BEGIN
/*需要执行的sql语句*/
END;
创建一个事件与test()的sql关联起来,这里为每天的0点执行
//test_event为该事件的名字
create event test_event
on schedule every 1 DAY STARTS date_add(date(curdate() + 1),interval 0 hour)
on completion preserve
do call test();
- completion preserve 为完成保存
订单有效时间
创建sql语句
create procedure order_checked()
begin
update order set STATUS='已超时',updateDate=now() where STATUS in ('未支付','已发货','待确认') and
if(STATUS='未支付',createDate<(select date_sub(now(), interval 20 MINUTE)), --20分钟
if(STATUS='已发货',updateDate<(select date_sub(now(), interval 3 hour)), --3小时
if(STATUS='待确认',updateDate<(select date_sub(now(), interval 2 hour)),1=2))); --2小时
end
创建定时器与该sql关联起来
ALTER EVENT cyEvent
ON SCHEDULE EVERY 60 SECOND STARTS now()
ON COMPLETION PRESERVE ENABLE
do call cy_order_checked();