您的位置:首页 > 数据库 > MySQL

mysql定时任务和事件解决订单自动更新状态问题

2017-04-20 15:32 323 查看
问题描述:数据库在订单结束时自动更新订单状态

解决方案:定时任务+事件

#开启event_scheduler sql指令
SHOW VARIABLES LIKE '%event_scheduler%';
SET GLOBAL event_scheduler = ON;

#定义存储过程
DELIMITER |
DROP PROCEDURE IF EXISTS update_device_status |
CREATE PROCEDURE update_device_status()
BEGIN
IF EXISTS(SELECT device_id FROM orderdetail WHERE NOW() < endtime ) THEN
UPDATE device SET state = FALSE WHERE id NOT IN (SELECT device_id FROM orderdetail WHERE NOW() < endtime);
END IF;
END
|
DELIMITER;
#创建定时器,每间隔一秒调用一次存储过程
DELIMITER |
DROP EVENT IF EXISTS event_remind_status |
CREATE EVENT  event_remind_status
ON SCHEDULE EVERY 1 SECOND  DO
BEGIN
CALL update_device_status();
END |
DELIMITER;
#启动定时器
ALTER EVENT event_remind_status ON
COMPLETION PRESERVE ENABLE;


参考文档:1>文档1 2>文档2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐