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 14 MySQL
MySQL kill不掉线程的原因
May 07 MySQL
一篇文章弄懂MySQL查询语句的执行过程
May 07 MySQL
MySQL CHAR和VARCHAR该如何选择
May 31 MySQL
Mysql 如何查询时间段交集
Jun 08 MySQL
mysql的数据压缩性能对比详情
Nov 07 MySQL
Linux系统下MySQL配置主从分离的步骤
Mar 21 MySQL
mysql的Buffer Pool存储及原理
Apr 02 MySQL
数据分析数据库ClickHouse在大数据领域应用实践
Apr 03 MySQL
MySQL创建管理KEY分区
Apr 13 MySQL
MySQL的意向共享锁、意向排它锁和死锁
Jul 15 MySQL
mysql序号rownum行号实现方式
Dec 24 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 远程关机实现代码
2009/11/10 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
2013/06/24 PHP
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
2013/07/05 PHP
javascript面向对象之二 命名空间
2011/02/08 Javascript
EditPlus注册码生成器(js代码实现)
2013/03/25 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
2014/09/23 Javascript
node.js中的fs.realpathSync方法使用说明
2014/12/16 Javascript
理解JavaScript中worker事件api
2015/12/25 Javascript
javascript实现input file上传图片预览效果
2015/12/31 Javascript
AngularJS 使用 UI Router 实现表单向导
2016/01/29 Javascript
基于jQuery实现收缩展开功能
2016/03/18 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
2016/10/28 Javascript
jQuery使用JSONP实现跨域获取数据的三种方法详解
2017/05/04 jQuery
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
chosen实现省市区三级联动
2018/08/16 Javascript
使用jQuery如何写一个含验证码的登录界面
2019/05/13 jQuery
layui禁用侧边导航栏点击事件的解决方法
2019/09/25 Javascript
简单实现节流函数和防抖函数过程解析
2019/10/08 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
[53:49]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python greenlet实现原理和使用示例
2014/09/24 Python
解决python文件字符串转列表时遇到空行的问题
2017/07/09 Python
django rest framework 实现用户登录认证详解
2019/07/29 Python
Django与pyecharts结合的实例代码
2020/05/13 Python
python seaborn heatmap可视化相关性矩阵实例
2020/06/03 Python
python 利用matplotlib在3D空间中绘制平面的案例
2021/02/06 Python
跟单文员岗位职责
2014/01/03 职场文书
采购经理岗位职责
2014/02/16 职场文书
七夕情人节促销方案
2014/06/07 职场文书
教师党员个人剖析材料
2014/09/29 职场文书
大学社团活动总结怎么写
2019/06/21 职场文书
python基础之匿名函数详解
2021/04/21 Python
python实现黄金分割法的示例代码
2021/04/28 Python
Python如何让字典保持有序排列
2022/04/29 Python
MySQL索引 高效获取数据的数据结构
2022/05/02 MySQL