利用mysql数据库创建定时任务——每天零点更新数据库操作
1、检查数据库事件状态
SHOW VARIABLES LIKE 'event_scheduler';
如果出现
证明已经开启
2、创建事件
例子:
CREATE EVENT testtime.`status`
ON SCHEDULE
EVERY 1 DAY
STARTS '2020-03-01 10:40:00'
ON completion preserve ENABLE
DO
update test set status=100;
解释:
第一行:在testtime表中创建事件,事件名称是status
第二行:可以理解为加入到mysql的事件中
第三行:设置每一天执行一次
第四行:设定开始时间
第五行:当设置的定时时间到期时(比如说如果加一个END 语句,设定2021.01.01零点结束,过了这个日期此EVENT就算到期),event会disable但是不能消失,如果设定为
ON completion not preserve ENABLE
到期时,event也会消失
第六行、第七行:要执行的更新语句
3、启动事件
上面的语句默认是启动的,但是为了保险起见,我们在设定一次启动
ALTER EVENT status ENABLE
其中status
为之前设定的事件名称
4、删除、停止事件
停止事件是利用:
ALTER EVENT status DISABLE
删除事件是利用
DROP EVENT status
status为事件名称
5、问题
创建了很多事件,不记得事件名称怎么办?
利用:
SELECT * FROM information_schema.EVENTS;
查看所有事件名称
例如博主的就是:(注意第一个不能删!!!!因为是系统自带的,最好不要删)
event_name就是事件名称
如果使用的是navicat就可以直接
点击上面的
事件
进行查看、删除
插入或者更新的数据都是‘0’
怎么办
可以修改相应字段为varchar类型,(int类型修改就会是0,无论是插入操作还是更新操作)