应用场景:购物商城发货后15天,自动更改订单状态为已收货
实现方式:event事件
实现步骤:
1.检查mysql是否开启了event事件,默认都是关闭状态 SHOW VARIABLES LIKE 'event_scheduler';
2.开启event事件 SET GLOBAL event_scheduler = ON;
3.创建函数
使用存储过程呢,我们可以定义的一系列sql语句的集合,涉及特定表或其它对象的任务,至于存储过程和函数的区别呢,这里就不多说了,或许之后会专门出一个文章吧!
4.订单记录,所以入参肯定是订单号了
5.接下来,就是要写重点了
这一步骤是先做了订单的校验,校验通过后进行数据修改,把订单状态改为已收货,并且插入收货记录
6.选择安全性、数据库身份、数据访问等,保存过程名为updateorder,记得点击运行,调试一下哦!
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分钟,然后到时间去看你的事件,这个事件不见了,没错,执行一次。
分享,是为了让自己的技术更扎实,欢迎交流,让我们共同进步~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。