MySQL创建定时任务


Posted in MySQL onJanuary 22, 2022

定时任务是老生常谈了,因为我们总是需要定时修改特定的数据。

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

通过了解,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 相关文章推荐
多属性、多分类MySQL模式设计
Apr 05 MySQL
mysql数据库入门第一步之创建表
May 14 MySQL
MySQL连接查询你真的学会了吗?
Jun 02 MySQL
MySQL中连接查询和子查询的问题
Sep 04 MySQL
MyBatis 动态SQL全面详解
Oct 05 MySQL
一文弄懂MySQL索引创建原则
Feb 28 MySQL
一次SQL如何查重及去重的实战记录
Mar 13 MySQL
分享几个简单MySQL优化小妙招
Mar 31 MySQL
MySQL数据库优化之通过索引解决SQL性能问题
Apr 10 MySQL
详解Mysq MVCC多版本的并发控制
Apr 29 MySQL
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
Jun 14 MySQL
SQL基础查询和LINQ集成化查询
Jan 18 #MySQL
MySQL常见优化方案汇总
Jan 18 #MySQL
mysql sum(if())和count(if())的用法说明
SQL语法CONSTRAINT约束操作详情
Jan 18 #MySQL
MySQL笔记 —SQL运算符
Jan 18 #MySQL
Mysql中一千万条数据怎么快速查询
Dec 06 #MySQL
Mysql中有关Datetime和Timestamp的使用总结
Dec 06 #MySQL
You might like
PHP第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
php变量作用域的深入解析
2013/06/03 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
2013/06/06 PHP
php json_encode值中大括号与花括号区别
2013/09/30 PHP
php实现12306余票查询、价格查询示例
2014/04/17 PHP
JavaScript的面向对象(二)
2006/11/09 Javascript
jquery如何判断某元素是否具备指定的样式
2013/11/05 Javascript
纯css实现窗户玻璃雨滴逼真效果
2015/08/23 Javascript
Javascript中apply、call、bind的巧妙使用
2016/08/18 Javascript
js倒计时显示实例
2016/12/11 Javascript
node.js中express中间件body-parser的介绍与用法详解
2017/05/23 Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
2017/07/11 Javascript
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
JavaScript模块管理的简单实现方式详解
2019/06/15 Javascript
[03:01]完美世界DOTA2联赛PWL S2 集锦第二期
2020/12/03 DOTA
浅谈python中的getattr函数 hasattr函数
2016/06/14 Python
centos6.7安装python2.7.11的具体方法
2017/01/16 Python
Python使用Matplotlib实现Logos设计代码
2017/12/25 Python
Linux CentOS7下安装python3 的方法
2018/01/21 Python
python爬取网页转换为PDF文件
2018/06/07 Python
python的pip安装以及使用教程
2018/09/18 Python
解决Python一行输出不显示的问题
2018/12/03 Python
Python图像处理之gif动态图的解析与合成操作详解
2018/12/30 Python
django从后台返回html代码的实例
2020/03/11 Python
网吧收银员岗位职责
2013/12/14 职场文书
大专毕业生求职信
2014/07/05 职场文书
法定代表人授权委托书范文
2014/08/02 职场文书
优秀团员事迹材料2000字
2014/08/20 职场文书
行政答辩状范文
2015/05/21 职场文书
宾馆客房管理制度
2015/08/06 职场文书
网络研修心得体会
2016/01/08 职场文书
2016应届毕业生就业指导课心得体会
2016/01/15 职场文书
教你怎么用Python实现多路径迷宫
2021/04/29 Python
代码解析React中setState同步和异步问题
2021/06/03 Javascript
Python list列表删除元素的4种方法
2021/11/01 Python
一文了解MySQL二级索引的查询过程
2022/02/24 MySQL