1.查看定时任务是否开启的sql:
[show VARIABLES LIKE '%event_scheduler%';/code]
如果显示为OFF的话则表示定时任务没有开启,如果为ON的话表示已经开启。
2.开启定时任务有两种:
2.1一种是临时启动,修改就即时生效,无须重启mysql服务,不过下次mysql服务重启时,又会变成默认的,即没有开启定时任务,sql如下:[code]set global event_scheduler =1; ## 0代表关闭 2.2另一中是永久启动,这就要修改配置文件。在你mysql服务器启动加载的配置my.ini中的[mysqld]下面添加以下语句:(对于centos 的Linux 来说一般就是 /etc/my.cnf 下的mysqld 下加入)
event_scheduler=ON;由于修改了配置文件,故要重启mysql服务才能是修改的配置生效。重启mysql -->
service mysqld restart3.重点来了3.1 创建一个存储过程
begin
update order_main set STATUS='4',update_time=UNIX_TIMESTAMP(now()) where STATUS = 1 and FROM_UNIXTIME(create_time)<(select date_sub(now(), interval 20 MINUTE));
end
在navicate 中如图
2.创建事件 定时调用上面的存储过程


作用是:
订单主表每30秒检测一下 创建事件超过20分钟的且订单状态未付款(statsu = 1)订单,将订单状态改为4 (也就是取消订单)
# 停止
ALTER EVENT eventName DISABLE;
# 开启
alter event eventName enable;
# 查看状态
select * from mysql.event
欢迎各位大佬加群共同学习 921044484
最佳答案