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 Show Profile
Apr 05 MySQL
mysql优化
Apr 06 MySQL
MySQL索引知识的一些小妙招总结
May 10 MySQL
浅谈MySQL之select优化方案
Aug 07 MySQL
MySQL数据库如何给表设置约束详解
Mar 13 MySQL
MySQL中一条update语句是如何执行的
Mar 16 MySQL
关于MySQL临时表为什么可以重名的问题
Mar 22 MySQL
mysql使用instr达到in(字符串)的效果
Apr 03 MySQL
以MySQL5.7为例了解一下执行计划
Apr 13 MySQL
为什么MySQL8新特性会修改自增主键属性
Apr 18 MySQL
MySQL如何修改字段类型和字段长度
Jun 10 MySQL
MySQL详解进行JDBC编程与增删改查方法
Jun 16 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
php查看当前Session的ID实例
2015/03/16 PHP
从wamp到xampp的升级之路
2015/04/08 PHP
PHP程序员的技术成长规划
2016/03/25 PHP
Javascript学习笔记 delete运算符
2011/09/13 Javascript
构造函数+原型模式构造js自定义对象(最通用)
2014/05/12 Javascript
初识Node.js
2014/09/03 Javascript
jQuery插件开发精品教程让你的jQuery提升一个台阶
2016/01/27 Javascript
java中String类型变量的赋值问题介绍
2016/03/23 Javascript
JS实现队列与堆栈的方法
2016/04/21 Javascript
JS实现输入框提示文字点击时消失效果
2016/07/19 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
2016/08/24 Javascript
JS封装的选项卡TAB切换效果示例
2016/09/20 Javascript
js HTML5手机刮刮乐代码
2020/09/29 Javascript
AngularJS中的拦截器实例详解
2017/04/07 Javascript
bootstrap daterangepicker汉化以及扩展功能
2017/06/15 Javascript
vue 音乐App QQ音乐搜索列表最新接口跨域设置方法
2018/09/25 Javascript
vue-cli3 配置开发与测试环境详解
2019/05/17 Javascript
[01:35]2014DOTA2西雅图邀请赛 专访狐狸妈青春献给刀塔
2014/07/08 DOTA
使用python 获取进程pid号的方法
2014/03/10 Python
Python中dictionary items()系列函数的用法实例
2014/08/21 Python
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
python django使用haystack:全文检索的框架(实例讲解)
2017/09/27 Python
PyQt5每天必学之像素图控件QPixmap
2018/04/19 Python
浅谈python下tiff图像的读取和保存方法
2018/12/04 Python
Python字符编码转码之GBK,UTF8互转
2020/02/09 Python
AUC计算方法与Python实现代码
2020/02/28 Python
基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解
2020/06/08 Python
使用HTML5 IndexDB存储图像和文件的示例
2018/11/05 HTML / CSS
zooplus波兰:在线宠物店
2019/07/21 全球购物
赞助商致辞
2015/07/30 职场文书
学习十八大的感悟
2015/08/11 职场文书
小学班主任工作随笔
2015/08/15 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书
2016年幼儿园教师师德承诺书
2016/03/25 职场文书
详解Python中下划线的5种含义
2021/07/15 Python