1

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

实现方式:event事件

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

clipboard.png

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

clipboard.png

3.创建函数

clipboard.png

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

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

clipboard.png

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

clipboard.png

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

6.选择安全性、数据库身份、数据访问等,保存过程名为updateorder,记得点击运行,调试一下哦!
clipboard.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分钟,然后到时间去看你的事件,这个事件不见了,没错,执行一次。

clipboard.png

clipboard.png

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


Alisa
147 声望7 粉丝

把自己当做一件产品去经营,货真价实