mysql event_mysql的event事件

应用场景:购物商城发货后15天,自动更改订单状态为已收货

实现方式:event事件

实现步骤:

1.检查mysql是否开启了event事件,默认都是关闭状态 SHOW VARIABLES LIKE 'event_scheduler';

ffd76c7b7239d9e930cdc0c569047dc2.png

2.开启event事件 SET GLOBAL event_scheduler = ON;

fe0676df46282d8e652a782d9d7a2f48.png

3.创建函数

8d064d52dd869f6401f3be960525056a.png

使用存储过程呢,我们可以定义的一系列sql语句的集合,涉及特定表或其它对象的任务,至于存储过程和函数的区别呢,这里就不多说了,或许之后会专门出一个文章吧!

4.订单记录,所以入参肯定是订单号了

0e88903e0b1f696bc5eaa3ccfab6bda8.png

5.接下来,就是要写重点了

6a43d124216c19204139cc207c484e37.png

这一步骤是先做了订单的校验,校验通过后进行数据修改,把订单状态改为已收货,并且插入收货记录

6.选择安全性、数据库身份、数据访问等,保存过程名为updateorder,记得点击运行,调试一下哦!

34a6ef52e96490684b266cf3844f4b29.png

7.然后在你的发货代码中写如下语句

$this->db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);

$this->db->query('CREATE DEFINER=`root`@`localhost` EVENT `confirmorder'.$ordernumber.'`

ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 15 DAY ON COMPLETION NOT

PRESERVE ENABLE DO call confirmorder("'.$ordernumber.'");');

$this->db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

8.每次发货后,就可以看到你的event事件了,注意哦,是One Time的,还可以看到执行时间,我是选择了7分钟,然后到时间去看你的事件,这个事件不见了,没错,执行一次。

95a0d793691911f05348e64d66a82d82.png

840572c83a46571dc96fc8e55027aa4c.png

分享,是为了让自己的技术更扎实,欢迎交流,让我们共同进步~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值