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 06 MySQL
MySQL创建索引需要了解的
Apr 08 MySQL
详解MySQL主从复制及读写分离
May 07 MySQL
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
Jun 26 MySQL
Mysql中调试存储过程最简单的方法
Jun 30 MySQL
MySQL8.0升级的踩坑历险记
Nov 01 MySQL
MySQL分区表实现按月份归类
Nov 01 MySQL
MySQL Innodb索引机制详细介绍
Nov 23 MySQL
Mysql事务索引知识汇总
Mar 17 MySQL
mysql 获取时间方式
Mar 20 MySQL
mysql insert 存在即不插入语法说明
Mar 25 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
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
2015/02/12 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
2017/09/30 PHP
pjblog中的UBBCode.js
2007/04/25 Javascript
JQuery实现表格中相同单元格合并示例代码
2013/06/26 Javascript
js实现点击添加一个input节点
2014/12/05 Javascript
window.open()实现post传递参数
2015/03/12 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
Vue自定义指令拖拽功能示例
2017/02/17 Javascript
WebSocket实现简单客服聊天系统
2017/05/12 Javascript
Web制作验证码功能实例代码
2017/06/19 Javascript
vue踩坑记录之数组定义和赋值问题
2019/03/20 Javascript
js cavans实现静态滚动弹幕
2020/05/21 Javascript
JS实现购物车基本功能
2020/11/08 Javascript
[04:53]DOTA2英雄基础教程 祈求者
2014/01/03 DOTA
详解python中的json的基本使用方法
2016/12/21 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
2017/01/20 Python
浅谈django开发者模式中的autoreload是如何实现的
2017/08/18 Python
利用python求解物理学中的双弹簧质能系统详解
2017/09/29 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/26 Python
python opencv判断图像是否为空的实例
2019/01/26 Python
提升python处理速度原理及方法实例
2019/12/25 Python
pytorch梯度剪裁方式
2020/02/04 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
2020/04/30 Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
2021/01/21 Python
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
关于赌博的检讨书
2014/01/08 职场文书
革命先烈的英雄事迹材料
2014/02/15 职场文书
优秀工会工作者事迹材料
2014/06/02 职场文书
2016教师暑期培训学习心得体会
2016/01/09 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
学生会自荐信
2019/05/16 职场文书
关于保护环境的建议书
2019/06/24 职场文书
MySQL 角色(role)功能介绍
2021/04/24 MySQL
Pytorch distributed 多卡并行载入模型操作
2021/06/05 Python
Python函数对象与闭包函数
2022/04/13 Python
js前端图片加载异常兜底方案
2022/06/21 Javascript