应用场景:购物商城发货后15天,自动更改订单状态为已收货mysql
实现方式:event事件sql
实现步骤:
1.检查mysql是否开启了event事件,默认都是关闭状态 SHOW VARIABLES LIKE 'event_scheduler'; 数据库
2.开启event事件 SET GLOBAL event_scheduler = ON;安全
3.建立函数函数
使用存储过程呢,咱们能够定义的一系列sql语句的集合,涉及特定表或其它对象的任务,至于存储过程和函数的区别呢,这里就很少说了,或许以后会专门出一个文章吧!this
4.订单记录,因此入参确定是订单号了spa
5.接下来,就是要写重点了调试
这一步骤是先作了订单的校验,校验经过后进行数据修改,把订单状态改成已收货,而且插入收货记录code
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分钟,而后到时间去看你的事件,这个事件不见了,没错,执行一次。
分享,是为了让本身的技术更扎实,欢迎交流,让咱们共同进步~