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 22 MySQL
MySQL安装后默认自带数据库的作用详解
Apr 27 MySQL
MySQL的join buffer原理
Apr 29 MySQL
分析MySQL抛出异常的几种常见解决方式
May 18 MySQL
MySQL 8.0 之不可见列的基本操作
May 20 MySQL
浅谈MySQL user权限表
Jun 18 MySQL
MySQL系列之八 MySQL服务器变量
Jul 02 MySQL
一文带你探究MySQL中的NULL
Nov 11 MySQL
MySQL之select、distinct、limit的使用
Nov 11 MySQL
面试中老生常谈的MySQL问答集锦夯实基础
Mar 13 MySQL
Mysql 数据库中的 redo log 和 binlog 写入策略
Apr 26 MySQL
MySQL中dd::columns表结构转table过程及应用详解
Sep 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
利用phpexcel把excel导入数据库和数据库导出excel实现
2014/01/09 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
2020/01/26 PHP
javaScript 关闭浏览器 (不弹出提示框)
2010/01/31 Javascript
Js 代码中,ajax请求地址后加随机数防止浏览器缓存的原因
2013/05/07 Javascript
jQuery中even选择器的定义和用法
2014/12/23 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
2015/04/06 Javascript
JavaScript作用域示例详解
2016/07/07 Javascript
浅谈javascript中的事件冒泡和事件捕获
2016/12/28 Javascript
jquery,js简单实现类似Angular.js双向绑定
2017/01/13 Javascript
使用Vue自定义指令实现Select组件
2018/05/24 Javascript
详解js中Array的方法及技巧
2018/09/12 Javascript
JS算法题之查找数字在数组中的索引位置
2019/05/15 Javascript
Vue2.0实现简单分页及跳转效果
2019/07/29 Javascript
微信小程序全选多选效果实现代码解析
2020/01/21 Javascript
react结合bootstrap实现评论功能
2020/05/30 Javascript
深入解读VUE中的异步渲染的实现
2020/06/19 Javascript
Vue包大小优化的实现(从1.72M到94K)
2021/02/18 Vue.js
浅谈python中np.array的shape( ,)与( ,1)的区别
2018/06/04 Python
Python基于pandas实现json格式转换成dataframe的方法
2018/06/22 Python
Python对接 xray 和微信实现自动告警
2019/09/17 Python
mac使用python识别图形验证码功能
2020/01/10 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
2020/04/21 Python
Python 忽略文件名编码的方法
2020/08/01 Python
世界上最大的专业美容用品零售商:Sally Beauty
2017/07/02 全球购物
爱尔兰旅游网站:ebookers.ie
2020/01/24 全球购物
英国家具、照明、家居用品网上商店:Wayfair.co.uk
2020/02/13 全球购物
2013届毕业生求职信范文
2013/11/20 职场文书
给海归自荐信的建议
2013/12/13 职场文书
文明学生标兵事迹
2014/01/21 职场文书
六年级数学教学反思
2014/02/03 职场文书
电子银行营销方案
2014/02/22 职场文书
优秀班主任事迹材料
2014/12/16 职场文书
死亡诗社观后感
2015/06/05 职场文书
《黄道婆》教学反思
2016/02/22 职场文书
浅谈Redis的事件驱动模型
2022/05/30 Redis
MySQL导致索引失效的几种情况
2022/06/25 MySQL