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 05 MySQL
MySQL中你可能忽略的COLLATION实例详解
May 12 MySQL
52条SQL语句教你性能优化
May 25 MySQL
正确使用MySQL INSERT INTO语句
May 26 MySQL
mysql 带多个条件的查询方式
Jun 05 MySQL
SQL实现LeetCode(180.连续的数字)
Aug 04 MySQL
详细聊聊关于Mysql联合查询的那些事儿
Oct 24 MySQL
MYSQL 表的全面总结
Nov 11 MySQL
mysql自增长id用完了该怎么办
Feb 12 MySQL
MySQL中一条update语句是如何执行的
Mar 16 MySQL
mysql数据库隔离级别详解
Jun 16 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&amp;mysql(四)
2006/10/09 PHP
PHP如何抛出异常处理错误
2011/03/02 PHP
使用PHPExcel操作Excel用法实例分析
2015/03/26 PHP
HTML中嵌入PHP的简单方法
2016/02/16 PHP
Yii数据库缓存实例分析
2016/03/29 PHP
PHP用PDO如何封装简单易用的DB类详解
2017/07/30 PHP
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
JavaScript中的几个关键概念的理解-原型链的构建
2011/05/12 Javascript
jquery绑定原理 简单解析与实现代码分享
2011/09/06 Javascript
jquery实现人性化的有选择性禁用鼠标右键
2014/06/30 Javascript
一个jquery实现的不错的多行文字图片滚动效果
2014/09/28 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
JS遍历数组及打印数组实例分析
2016/01/21 Javascript
详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
2016/09/14 Javascript
原生js实现手风琴功能(支持横纵向调用)
2017/01/13 Javascript
基于angular实现模拟微信小程序swiper组件
2017/06/11 Javascript
react-native-video实现视频全屏播放的方法
2018/03/19 Javascript
bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?
2019/07/26 Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
2019/09/24 Javascript
初学Python实用技巧两则
2014/08/29 Python
Python利用多进程将大量数据放入有限内存的教程
2015/04/01 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
2016/06/07 Python
python itchat实现微信好友头像拼接图的示例代码
2017/08/14 Python
python复制文件到指定目录的实例
2018/04/27 Python
Python实现朴素贝叶斯分类器的方法详解
2018/07/04 Python
Django admin model 汉化显示文字的实现方法
2019/08/12 Python
python对象转字典的两种实现方式示例
2019/11/07 Python
Python函数的默认参数设计示例详解
2019/12/01 Python
开办化妆品公司创业计划书
2013/12/26 职场文书
酒店保安领班职务说明书
2014/03/04 职场文书
婚内分居协议书范文
2014/11/26 职场文书
学长教您写论文:经验总结
2019/07/09 职场文书
golang 生成对应的数据表struct定义操作
2021/04/28 Golang
低门槛开发iOS、Android、小程序应用的前端框架详解
2021/10/16 Javascript
浅析python中特殊文件和特殊函数
2022/02/24 Python
草系十大最强宝可梦,纸片人上榜,榜首大家最熟悉
2022/03/18 日漫