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 存储过程的优缺点分析
May 20 MySQL
linux下导入、导出mysql数据库命令的实现方法
May 26 MySQL
MySQL中distinct与group by之间的性能进行比较
May 26 MySQL
浅谈MySQL next-key lock 加锁范围
Jun 07 MySQL
浅析MySQL如何实现事务隔离
Jun 26 MySQL
MySQL数据库索引的最左匹配原则
Nov 20 MySQL
解决Mysql多行子查询的使用及空值问题
Jan 22 MySQL
一文搞懂MySQL索引页结构
Feb 28 MySQL
MySQL去除密码登录告警的方法
Apr 20 MySQL
MySQL索引失效场景及解决方案
Jul 23 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
详解:――如何将图片储存在数据库里
2006/12/05 PHP
PHP函数学习之PHP函数点评
2012/07/05 PHP
PHP取整数函数常用的四种方法小结
2012/07/05 PHP
php中url函数介绍及使用示例
2014/02/13 PHP
php的XML文件解释类应用实例
2014/09/22 PHP
php实现用于计算执行时间的类实例
2015/04/18 PHP
js getBoundingClientRect() 来获取页面元素的位置
2010/11/25 Javascript
jQuery-onload让第一次页面加载时图片是淡入方式显示
2012/05/23 Javascript
js/html光标定位的实现代码
2013/09/23 Javascript
JavaScript使用指针操作实现约瑟夫问题实例
2015/04/07 Javascript
jquery及js实现动态加载js文件的方法
2016/01/21 Javascript
JS 插件dropload下拉刷新、上拉加载使用小结
2017/04/13 Javascript
Bootstrap fileinput文件上传预览插件使用详解
2017/05/16 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
2017/06/15 Javascript
Chrome调试折腾记之JS断点调试技巧
2017/09/11 Javascript
在vue中使用inheritAttrs实现组件的扩展性介绍
2020/12/07 Vue.js
[00:37]DOTA2上海特级锦标赛 Secert 战队宣传片
2016/03/03 DOTA
Python实现字符型图片验证码识别完整过程详解
2019/05/10 Python
Python数据类型之列表和元组的方法实例详解
2019/07/08 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
2020/02/27 Python
Python3使用xlrd、xlwt处理Excel方法数据
2020/02/28 Python
更新升级python和pip版本后不生效的问题解决
2020/04/17 Python
python在地图上画比例的实例详解
2020/11/13 Python
美国最大的农村生活方式零售店:Tractor Supply Company(TSC)
2017/05/15 全球购物
Hotels.com南非:酒店预订
2017/11/02 全球购物
医生实习工作总结的自我评价
2013/09/27 职场文书
销售工作人员的自我评价分享
2013/11/10 职场文书
学生请假条格式
2014/04/11 职场文书
家具公司总经理岗位职责
2014/07/08 职场文书
村级个人对照检查材料
2014/08/22 职场文书
企业务虚会发言材料
2014/10/20 职场文书
本科毕业论文导师评语
2014/12/31 职场文书
2015暑假打工实践报告
2015/07/13 职场文书
2019广播稿怎么写
2019/04/17 职场文书
MySQL中IO问题的深入分析与优化
2022/04/02 MySQL
python Tkinter模块使用方法详解
2022/04/07 Python