具体 *** 作如下:
先看看看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语句就定时执行一次。
关闭事件任务
可以在某个时间点执行一个 *** 作,但是查了些**发现mysql定时任务,它就又执行下一条 *** 作呢,当该 *** 作执行完后mysql5,然后我就想,大多都是这样的例子?这样子的功能单纯用mysql的定时任务能实现不.1后自带了定时任务机制,执行一个 *** 作,所以就不想采用利用系统执行定时脚本的方式,那么它可不可以在某个时间点此外,子程序在提高程序的重用性和可维护方面也是很有用的。只要编译成功,子程序就可以放心地用在很多应用程序中。如果它的定义内容发生了改变,受到影响的只有子程序本身而已,这就简化了维护过程。最后,子程序还有助于逻辑的抽象。使用子程序时,我们需要知道的是它们的功能,而不是它们实现功能的细节问题。
mysql实现定时任务是有一个时间调度器,所以首先要查看这个时间调度器是否开启。查看的命令:
show variables like 'event_scheduler'
如果没有打开,则设置打开。设置的命令是:
set global event_scheduler = ON或set global event_scheduler = 1
确定打开事件调度器后,我们可以创建一个定时任务。
创建定时任务的语法为:
create event 定时任务名称
ON schedule 定时时间
do
定时任务所要执行的sql
example:每隔一分钟往表tt里插入一条数据
create event insert_tt
ON schedule every 1 MINUTE
do
insert into tt values(1)
如果要执行多条sql则可用多个do
create event insert_tt
ON schedule every 1 MINUTE
do
insert into tt values(1)
do
.......
使用命令查看所有的定时任务及其状态:
show processlist
如果要停掉某个定时任务可以使用:
alter event 定时任务名 ON
COMPLETION PRESERVE DISABLE
example:
alter event insert_tt ON
COMPLETION PRESERVE DISABLE
开启某个定时任务:
alter event 定时任务名称 ON
COMPLETION PRESERVE ENABLE
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)