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时间设置注意事项的深入总结
May 06 MySQL
MySQL索引知识的一些小妙招总结
May 10 MySQL
MySql新手入门的基本操作汇总
May 13 MySQL
MySQL之MyISAM存储引擎的非聚簇索引详解
Mar 03 MySQL
MySQL RC事务隔离的实现
Mar 31 MySQL
MySQL数据库查询进阶之多表查询详解
Apr 08 MySQL
MySQL创建管理HASH分区
Apr 13 MySQL
MySQL的prepare使用以及遇到的bug
May 11 MySQL
MySQL8.0 Undo Tablespace管理详解
Jun 16 MySQL
mysql数据库隔离级别详解
Jun 16 MySQL
了解MySQL查询语句执行过程(5大组件)
Aug 14 MySQL
Mysql如何查看是否使用到索引
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 中的一些经验积累
2006/10/09 PHP
又一个图片自动缩小的JS代码
2007/03/10 Javascript
犀利的js 函数集合
2009/06/11 Javascript
再次分享18个非常棒的jQuery表格插件
2011/04/10 Javascript
IE6浏览器下resize事件被执行了多次解决方法
2012/12/11 Javascript
解决js中window.open弹出的是上次的缓存页面问题
2013/12/29 Javascript
JS二维数组的定义说明
2014/03/03 Javascript
jquery中checkbox全选失效的解决方法
2014/12/26 Javascript
jQuery实现动画效果circle实例
2015/08/06 Javascript
移动端js图片查看器
2016/11/17 Javascript
JS库之ParticlesJS使用简介
2017/09/12 Javascript
简单实现jQuery弹窗效果
2017/10/30 jQuery
javascript函数的节流[throttle]与防抖[debounce]
2017/11/15 Javascript
基于vue+canvas的excel-like组件实例详解
2017/11/28 Javascript
JavaScript中Object值合并方法详解
2017/12/22 Javascript
vue 2.x 中axios 封装的get 和post方法
2018/02/28 Javascript
Angular5中状态管理的实现
2018/09/03 Javascript
使用Javascript简单计算器
2018/11/17 Javascript
JavaScript常见鼠标事件与用法分析
2019/01/03 Javascript
微信小程序开发之左右分栏效果的实例代码
2019/05/20 Javascript
JQuery使用属性addClass、removeClass和toggleClass实现增加和删除类操作示例
2019/11/18 jQuery
Python3读取zip文件信息的方法
2015/05/22 Python
5款非常棒的Python工具
2018/01/05 Python
Linux下Python安装完成后使用pip命令的详细教程
2018/11/22 Python
PYTHON EVAL的用法及注意事项解析
2019/09/06 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
python3爬取torrent种子链接实例
2020/01/16 Python
基于Django signals 信号作用及用法详解
2020/03/28 Python
keras 自定义loss层+接受输入实例
2020/06/28 Python
python3.7添加dlib模块的方法
2020/07/01 Python
中医专业职业生涯规划书范文
2014/01/04 职场文书
六年级学生评语
2014/04/22 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
学校运动会感想
2015/08/10 职场文书
2016年基层党组织创先争优承诺书
2016/03/25 职场文书
Arthas排查Kubernetes中应用频繁挂掉重启异常
2022/02/28 MySQL