MYSQL定时执行事件

MYSQL定时执行事件,第1张

mysql要实现定时执行sql语句就要用到Event

具体 *** 作如下:

先看看看event 事件是否开启

show variables like '%sche%'

如没开启,则开启。需要数据库超级权限

set global event_scheduler =1

创建存储过程 update_a (注:就是你要执行的sql语句)

mysql>create procedure update_a() update a set a.y_avg=(select avg(b.youhao) from b where a.a_id=b.a_id)

创建一个定时任务:event e_updateA

mysql>create event if not exists e_updateA

->on schedule every 60 second ---设置60秒执行一次

->on schedule at date_add(now(),interval 1 minute) ---在一分钟后执行

->on completion preserve

->do call update_a()---执行update_a()存储过程

创建Event之后,sql语句就定时执行一次。

关闭事件任务

1、启动Navicat for MySQL,新建数据库连接,打开数据库,可能有点啰嗦。

2、可以先查看定时任务的是否开启。通过以下命令:show variables like '%sche%'

3、如果其设置值为为 OFF 或 0 ,通过执行下列语句,来开启event_scheduler,set global event_scheduler =1,把设置为设为ON 或 1。

4、新建一个函数 ,取名为update_qiandao ,内容为 UPDATE week7_user SET isqiandao = 0

5、参照上图,新建一个事件 ,在定义里写 call update_qiandao() --也就是之前定义的函数

在“计划”选项卡中设置 执行时间,这里我选择的是每天。

首先在sql中查询计划事件的状态:SHOW VARIABLES LIKE 'event_scheduler'

如果返回的是off表示当前是关闭状态,如果是on当前已经开启了计划任务。

在mysql程序的目录下找到my.ini文件,添加一个项:event_scheduler = 1

保存后重启mysql服务即可,重启服务可以在服务管理里面找到

也可以用脚本来实现:

mysql event_scheduler

开启event_scheduler sql指令:

SET GLOBAL event_scheduler = ON

SET @@global.event_scheduler = ON

SET GLOBAL event_scheduler = 1

SET @@global.event_scheduler = 1

相反,关闭event_scheduler指令:

SET GLOBAL event_scheduler = OFF

SET @@global.event_scheduler = OFF

SET GLOBAL event_scheduler = 0

SET @@global.event_scheduler = 0


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7492935.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存