navicate创建mysql存储过程,定时器事件定时调用,更新状态

简介

  • 项目需求:客户购买课程(有时限),课程过期后,状态修改成过期,无法再使用;
  • 方向:利用mysql定时器调用存储过程,自动修改数据库状态为过期;

实践

  • 首先使用navicate创建一个存储过程,创建流程如下:

1. 点击新建函数:

 

2. 点击创建过程:

 

3. 输入存储过程的参数,如果存储过程不需要参数,可以直接点击完成即可;如果需要参数,varchar需要指定长度,否则会报错(本实例不添加参数);

 

4. 新建存储过程sql,将购买时间大于1天的商品全部修改成已过期状态:

BEGIN
  #Routine body goes here...
  #获取当前的时间
  SET @now_str = date_format(now(), '%Y-%m-%d %H:%i:%s');
  
  #根据当前时间以及购买时间,将大于等于1天的产品修改成过期状态
  UPDATE goods_deal set deal_status = '2',update_time =@now_str where deal_status = '1' and TIMESTAMPDIFF(DAY, deal_time, now()) >= 1;

END;

 

5. 保存存储过程,输入名称(goods_status_update),完成后可以点击运行看看效果;

 

  • 之后新建定时器,创建流程如下:

1. 点击新建事件:

 

2. 点击 "定义",调用存储过程:CALL goods_status_update;

 

3. 点击 "计划",定义调用事件周期,如下表示每十秒调用一次(可根据需求自定义调用事件周期):

 

4. 点击保存,输入定时器事件名称(goods_status_update),可以输入和存储过程一样的名称,方便记忆:

 

5. 点击保存的时候,会弹出以下对话框,表明定时器尚未开启,需要手动去开启;

 

  • 手动开启定时器事件,调用存储过程

1. 查看定时器事件状态:SHOW VARIABLES LIKE "%event_scheduler%";

 

2. 修改定时器事件状态,ON为开启,OFF为关闭:SET GLOBAL event_scheduler = OFF;

    再查看状态,已修改成开启状态,定时器事件将会自动调用存储过程;

总结

  • 使用navicate工具创建存储过程,同时使用定时器事件去定时调用,被广泛应用于商品购买的时效性处理上,不用调用项目去手动执行,极大方便项目开发;
  • 创建存储过程,创建定时器的整个流程并不困难,实践是检验认识真理性的唯一标准,自己动手,丰衣足食~

 

发布了79 篇原创文章 · 获赞 276 · 访问量 57万+

猜你喜欢

转载自blog.csdn.net/alan_liuyue/article/details/98626443
今日推荐