承接国内外服务器租用托管、定制开发、网站代运营、网站seo优化托管接单、网站代更新,新老站点皆可!!咨询QQ:3787320601
当前位置:首页  >  互联网圈  >  MySQL创建定时任务

MySQL创建定时任务

管理员 2023-06-20 11:40:14 互联网圈 11 ℃ 0 评论 2544字 收藏

MySQL创建定时任务

定时任务是陈词滥调了,由于我们总是需要定时修改特定的数据。

实现它的方法肯定不止一种,但我在相当长一段时间里都是用程序编码去做的,今天突然想到“为何一定要采取调用的方式?”,用数据库本身的能力去实现不是更好么?

通过了解,mysql的事件机制可以完成定时任务,其原理是在指定的时间调用指定的存储进程。现在很简单了不是?开弄。

首先,我们需要一个存储进程,虽然很简单,但斟酌到入门童鞋,我或者贴出一个例子:

delimiter $$;
create procedure del_car_viol()
begin
delete from car_viol where `create` < date_sub(curdate(), interval 1 day);
end
$$;
delimiter;

这一段代码中创建了一个存储进程,它可以删除时间小于昨天的数据(表明字段名请疏忽)。

接下来就是创建一个事件,让事件依照某种规则去调用存储进程,这样就能够实现定时操作的功能。

代码以下:

create event `e_update_user_ticket`
on schedule every 1 day starts ‘2017-09-02 00:00:00’
on completion not preserve enable do call del_car_viol();

上面的代码创建的事件,它可以从2017年9月2日零点开始每隔一天自动调用之前写好的存储进程。

代码中的 1 day 代表一天一次,你也能够替换成 2 year(2年一次)。

事件创建好以后就会立刻履行一次,并且通常为默许开启的。

如果你想控制某个事件的运行状态,可以这样:

/*开启事件*/
alter event 事件名 on completion preserve enable;
/*关闭事件*/
alter event 事件名 on completion preserve disable;

如果你不知道你的mysql有无开启时间功能的支持,可以通过以下语句查询:

/*查看事件功能会不会开启*/
show variables like ‘event_scheduler’;

查询表中value为 off 代表关,on 代表开。如果想开启事件功能,履行以下语句:

/*开启事件功能*/
set global event_scheduler = on;

需要注意的是,event机制是mysql5.1版本开始引入的,这意味着版本低于5.1的可能没法使用。

到此这篇关于MySQL创建定时任务的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。

文章来源:丸子建站

文章标题:MySQL创建定时任务

https://www.wanzijz.com/view/57018.html

X

截屏,微信识别二维码

微信号:weimawl

(点击微信号复制,添加好友)

打开微信