mysql使用Navicat创建每5秒执行一次sql语句事件

一、查询事件调度器event scheduler是否开启

show variables like 'event_scheduler'

二、查询结果

1、如果为on,说明事件调度器已经开启
在这里插入图片描述
2、如果显示OFF,则输入以下语句,开启事件调度器

set global event_scheduler = on;

三、设置事件开机自动启动

在重启电脑后event_scheduler会自动关闭,所以我们要设置调度器随着mysql的启动而启动,需要在my.ini配置文件的[mysqld]部分加上

event_scheduler=ON

在这里插入图片描述
四、创建event:每天自动清空表

CREATE EVENT
IF
	NOT EXISTS updlogStatus 
	ON SCHEDULE EVERY 5 SECOND 
	ON COMPLETION PRESERVE 
	DO
	UPDATE cmd_log log 
	SET log.STATUS = '19' 
WHERE
	log.time < SUBDATE( now(), INTERVAL 15 SECOND ) 
	AND log.STATUS = '15'
#注释:
 ON SCHEDULE EVERY 5 SECOND 按计划每5秒执行一次该事件
 ON COMPLETION PRESERVE  指定创建完成后即启用,否则需手动启动
 UPDATE cmd_log log 
	SET log.STATUS = '19' 
WHERE
	log.time < SUBDATE( now(), INTERVAL 15 SECOND ) 
	AND log.STATUS = '15' 自己的业务需求我是修改时间小于15秒之前的log日志为15的改成19
DROP EVENT IF EXISTS e_delete_upvote;
CREATE  EVENT e_delete_upvote   
 ON SCHEDULE EVERY 1 day STARTS date_add(concat(current_date(), ' 00:00:00'), interval 0 second)
 ON COMPLETION PRESERVE ENABLE
 DO
 TRUNCATE TABLE dreamland.upvote;
 
#注释:
 ON SCHEDULE EVERY 1 day 指定循环间隔为每天执行
 STARTS date_add(concat(current_date(), ' 23:59:00'), interval 0 second) 指定运行时间为23:59:00
 ON COMPLETION PRESERVE ENABLE 指定创建完成后即启用,否则需手动启动

在计划里面可以修改清空数据的间隔时间,可以用来测试使用。
在这里插入图片描述
在这里插入图片描述

五、手动关闭事件

ALTER EVENT e_delete_upvote DISABLE;

六、手动设置该事件为可用

ALTER EVENT e_delete_upvote ENABLE;

七、查看已有的定时事件任务

SHOW EVENTS;

在这里插入图片描述

八、删除事件

DROP EVENT e_delete_upvote;

猜你喜欢

转载自blog.csdn.net/qq_42862247/article/details/119784987