MySql的定时器

准备工作

定时任务的开启,必须具备操作的权限
SET GLOBAL event_scheduler = 1;
查看定时任务的是否开启
SHOW VARIABLES LIKE 'event_scheduler';
查看设置的定时任务有哪些
select * from  mysql.event;
定时任务的设置,do 后面放的就是执行的sql语句
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();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值