具体 *** 作如下:
先看看看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的制约。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)