一、软件准备
- Navicat
- MySQL5.7
二、开启MySQL事件计划
查询MySQL事件计划是否开启。
show VARIABLES LIKE 'event%';
如果未开启就打开。
SET GLOBAL event_scheduler = 1;
三、创建MySQL函数
函数和过程十分类似,因此就直接创建函数,Navicat软件也把过程和函数统一放在函数菜单栏。
3.1 写SQL语句
编写需求业务的SQL语句,并进行测试,如将某个终端的数据整体后移3个月。
update table set date = DATE_ADD(date,INTERVAL 3 month) WHERE number = '110'
3.2 创建函数
BEGIN #Routine body goes here... update table set date = DATE_ADD(date,INTERVAL 3 month) WHERE number = '110'; RETURN 0; END;
点击保存,给函数命名为 updateData,参数设置为空,完成函数的创建。
在函数菜单栏能看到刚才保存的函数。
3.3 创建事件
call updateData
状态设置为 ENABLE。
ON COMPLETETION设置为 PERSERVE,该参数表示"当这个事件不会再发生的时候",即当单次计划任务执行完毕后或当重复性的计划任务执行到了ENDS阶段。而PRESERVE的作用是使事件在执行完毕后不会被杀掉。
同样的,给事件命名,事件菜单栏会出现刚保存的事件。
接着给对事件的调用周期进行设置。
四、查询事件计划
SELECT * from mysql.`event`;
出现以下事件计划的详细信息,
五、注意事项
5.1 时区问题
笔者排查到函数执行了,但是数据库没发生变化,尝试将函数变为过程,发现可以执行了。???后续再确认。