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 视图(View)原理解析
May 19 MySQL
如何设计高效合理的MySQL查询语句
May 26 MySQL
MySQL不使用order by实现排名的三种思路总结
Jun 02 MySQL
MySQL系列之五 视图、存储函数、存储过程、触发器
Jul 02 MySQL
Node-Red实现MySQL数据库连接的方法
Aug 07 MySQL
分享mysql的current_timestamp小坑及解决
Nov 27 MySQL
浅谈如何保证Mysql主从一致
Mar 13 MySQL
MySQL分区以及建索引的方法总结
Apr 13 MySQL
mysql 乱码 字符集latin1转UTF8
Apr 19 MySQL
单机多实例部署 MySQL8.0.20
May 15 MySQL
MySQL普通表如何转换成分区表
May 30 MySQL
MySQL聚簇索引和非聚簇索引的区别详情
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
使用正则替换变量
2007/05/05 Javascript
ExtJS PropertyGrid中使用Combobox选择值问题
2010/06/13 Javascript
一个js拖拽的效果类和dom-drag.js浅析
2010/07/17 Javascript
js的一些常用方法小结
2011/06/29 Javascript
解析jQuery与其它js(Prototype)库兼容共存
2013/07/04 Javascript
jquery 淡入淡出效果的简单实现
2014/02/07 Javascript
javascript操作referer详细解析
2014/03/10 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
jquery实现简单的banner轮播效果【实例】
2016/03/30 Javascript
gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)
2016/08/24 Javascript
javascript表单控件实例讲解
2016/09/13 Javascript
jQuery动态添加与删除tr行实例代码
2016/10/18 Javascript
Es6 写的文件import 起来解决方案详解
2016/12/13 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
2017/05/27 Javascript
微信小程序图片轮播组件gallery slider使用方法详解
2018/01/31 Javascript
通过nodejs 服务器读取HTML文件渲染到页面的方法
2018/05/17 NodeJs
vue element ui validate 主动触发错误提示操作
2020/09/21 Javascript
Python使用sftp实现上传和下载功能(实例代码)
2017/03/14 Python
windows下python和pip安装教程
2018/05/25 Python
Python wxPython库消息对话框MessageDialog用法示例
2018/09/03 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
Pandas中Series和DataFrame的索引实现
2019/06/27 Python
新手学python应该下哪个版本
2020/06/11 Python
Python extract及contains方法代码实例
2020/09/11 Python
python如何绘制疫情图
2020/09/16 Python
python 列表推导和生成器表达式的使用
2021/02/01 Python
完美解决torch.cuda.is_available()一直返回False的玄学方法
2021/02/06 Python
Oral-B荷兰:牙医最推荐的品牌
2020/02/25 全球购物
荣耀俄罗斯官网:HONOR俄罗斯
2020/10/31 全球购物
英文简历自荐信范文
2013/12/11 职场文书
办公室员工岗位工作职责
2014/03/10 职场文书
高中教师考核方案
2014/05/18 职场文书
医生个人年度总结
2015/02/28 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书
MySQL的InnoDB存储引擎的数据页结构详解
2022/03/03 MySQL