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的数据库引擎为INNODB的方法
May 26 MySQL
MySQL中in和exists区别详解
Jun 03 MySQL
MySQL 8.0 驱动与阿里druid版本兼容问题解决
Jul 01 MySQL
MySQL系列之十三 MySQL的复制
Jul 02 MySQL
mysql5.6主从搭建以及不同步问题详解
Dec 04 MySQL
MySQL如何快速创建800w条测试数据表
Mar 17 MySQL
一文简单了解MySQL前缀索引
Apr 03 MySQL
Golang连接并操作MySQL
Apr 14 MySQL
解决Mysql中的innoDB幻读问题
Apr 29 MySQL
mysql 获取相邻数据项
May 11 MySQL
MySQL中正则表达式(REGEXP)使用详解
Jul 07 MySQL
关于MySQL中explain工具的使用
May 08 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/10/30 PHP
PHP冒泡排序算法代码详细解读
2011/07/17 PHP
使用PHP备份MYSQL数据的多种方法
2014/01/15 PHP
Windows下Apache + PHP SESSION丢失的解决过程全纪录
2015/04/07 PHP
如何利用预加载优化Laravel Model查询详解
2017/08/11 PHP
ThinkPHP5框架缓存查询操作分析
2018/05/30 PHP
javascript使用activex控件的代码
2011/01/27 Javascript
javascript学习笔记(十六) 系统对话框(alert、confirm、prompt)
2012/06/20 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
2014/06/16 Javascript
javascript匿名函数实例分析
2014/11/18 Javascript
浅谈JavaScript中运算符的优先级
2015/07/07 Javascript
js实现Form栏显示全格式时间时钟效果代码
2015/08/19 Javascript
js实现完美兼容各大浏览器的人民币大小写相互转换
2015/10/29 Javascript
JS及JQuery对Html内容编码,Html转义
2017/02/17 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
微信小程序开发图片拖拽实例详解
2017/05/05 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
2017/07/17 Javascript
Vue中对拿到的数据进行A-Z排序的实例
2018/09/25 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
在pytorch中为Module和Tensor指定GPU的例子
2019/08/19 Python
python实现将视频按帧读取到自定义目录
2019/12/10 Python
python使用scapy模块实现ping扫描的过程详解
2021/01/21 Python
python爬虫beautifulsoup库使用操作教程全解(python爬虫基础入门)
2021/02/19 Python
使用CSS3的appearance属性改变元素的外观的方法
2015/12/12 HTML / CSS
英国最大的汽车交易网站:Auto Trader UK
2016/09/23 全球购物
连卡佛中国官网:Lane Crawford中文站
2018/01/27 全球购物
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
关于VPN
2012/06/10 面试题
奶茶店创业计划书范文
2014/01/17 职场文书
小学学校门卫岗位职责
2014/08/03 职场文书
党支部对照检查材料
2014/08/25 职场文书
八项规定对照检查材料
2014/08/31 职场文书
群众路线教育实践活动总结
2014/10/30 职场文书
2015年团支部工作总结
2015/04/03 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书
Java Spring Lifecycle的使用
2022/05/06 Java/Android