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语句就定时执行一次。

关闭事件任务

查看event是否开启

代码如下

show

variables

like

'%sche%'

将事件计划开启

代码如下

set

global

event_scheduler

=1

创建存储过程test

代码如下

CREATE

PROCEDURE

test

()

BEGIN

update

examinfo

SET

endtime

=

now()

WHERE

id

=

14

END

创建event

e_test

代码如下

create

event

if

not

exists

e_test

on

schedule

every

30

second

on

completion

preserve

do

call

test()

每隔30秒将执行存储过程test,将当前时间更新到examinfo表中id=14的记录的endtime字段中去.

关闭事件任务

代码如下

alter

event

e_test

ON

COMPLETION

PRESERVE

DISABLE

开户事件任务

代码如下

alter

event

e_test

ON

COMPLETION

PRESERVE

ENABLE

以上测试均成功,测试环境为mysql

5.4.2-beta-community

mysql

community

server(GPL)

以上的相关内容就是对MySQL定时执行的介绍,望你能有所收获。

mysql

计划任务重启后消失

我们只要修改一配置即可

event_scheduler在mysql的config中设置为OFF有关。去mysql中将配置改为ON则就搞定了。

最常用的做法是使用UNIX的cron直接执行Java程序。

并不需要在Java做的那么复杂。

Windows服务器也有类似于cron的任务管理功能,同理

--------------------------->

Tomcat不是用来管理定时任务的,如果没有HTTP请求,Servlet是不会被执行的。

建议lz把定期执行的处理做成一个独立的Java程序,用cron执行。

如果不想写独立的Java程序,也可以用cron定期向Tomcat发送Http请求,但是,这样做的话注意程序处理时间不能太长,因为HTTP通信有timeout的制约。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存