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数据库千万级数据查询和存储
May 18 MySQL
MySQL中distinct和count(*)的使用方法比较
May 26 MySQL
Mysql效率优化定位较低sql的两种方式
May 26 MySQL
MySQL中InnoDB存储引擎的锁的基本使用教程
May 26 MySQL
sql注入教程之类型以及提交注入
Aug 02 MySQL
Prometheus 监控MySQL使用grafana展示
Aug 30 MySQL
MySQL中datetime时间字段的四舍五入操作
Oct 05 MySQL
MySQL 数据库范式化设计理论
Apr 22 MySQL
MySQL批量更新不同表中的数据
May 11 MySQL
mysql实现将字符串字段转为数字排序或比大小
Jun 14 MySQL
MySQL新手入门进阶语句汇总
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
攻克CakePHP系列一 连接MySQL数据库
2008/10/22 PHP
详谈PHP文件目录基础操作
2014/11/11 PHP
php使用curl简单抓取远程url的方法
2015/03/13 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
JavaScript和ActionScript的交互实现代码
2010/08/01 Javascript
利用javascript解决图片缩放及其优化的代码
2012/05/23 Javascript
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
2012/08/22 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
Nodejs从有门道无门菜鸟起飞必看教程
2016/07/20 NodeJs
vue轮播图插件vue-awesome-swiper的使用代码实例
2017/07/10 Javascript
详解利用 Express 托管静态文件的方法
2017/09/18 Javascript
浏览器调试动态js脚本的方法(图解)
2018/01/19 Javascript
vue spa应用中的路由缓存问题与解决方案
2019/05/31 Javascript
JS+CSS实现过渡特效
2021/01/02 Javascript
[01:03]DOTA2新的征程 你的脚印值得踏上
2014/08/13 DOTA
[54:27]TNC vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
详解Python多线程
2016/11/14 Python
你应该知道的python列表去重方法
2017/01/17 Python
利用Celery实现Django博客PV统计功能详解
2017/05/08 Python
python实现淘宝秒杀脚本
2020/06/23 Python
python redis 批量设置过期key过程解析
2019/11/26 Python
通过python 执行 nohup 不生效的解决
2020/04/16 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
2020/04/24 Python
Django表单提交后实现获取相同name的不同value值
2020/05/14 Python
Python3创建Django项目的几种方法(3种)
2020/06/03 Python
详解Python 中的容器 collections
2020/08/17 Python
python通过cython加密代码
2020/12/11 Python
Python实现小黑屋游戏的完整实例
2021/01/06 Python
荷兰超市:DEEN
2018/03/14 全球购物
linux面试题参考答案(9)
2015/01/07 面试题
实体的生命周期
2013/08/31 面试题
家长给孩子的评语
2014/01/30 职场文书
2015安全保卫工作总结
2015/04/25 职场文书
初任公务员培训心得体会
2016/01/08 职场文书