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 06 MySQL
MySQL 自定义变量的概念及特点
May 13 MySQL
安装配置mysql及Navicat prenium的详细流程
Jun 10 MySQL
解决mysql模糊查询索引失效问题的几种方法
Jun 18 MySQL
MySQL索引是啥?不懂就问
Jul 21 MySQL
MySQL的存储函数与存储过程的区别解析
Apr 08 MySQL
详解Mysq MVCC多版本的并发控制
Apr 29 MySQL
MySql数据库 查询时间序列间隔
May 11 MySQL
MySQL数据库实验之 触发器和存储过程
Jun 21 MySQL
SQL语句中EXISTS的详细用法大全
Jun 25 MySQL
MySQL 原理与优化之Limit 查询优化
Aug 14 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/04/22 PHP
PHP 页面跳转到另一个页面的多种方法方法总结
2009/07/07 PHP
ThinkPHP3.1新特性之动态设置自动完成和自动验证示例
2014/06/19 PHP
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
2014/11/06 PHP
详解PHP实现异步调用的4种方法
2016/03/14 PHP
php+html5+ajax实现上传图片的方法
2016/05/14 PHP
PHP简单留言本功能实现代码
2017/06/09 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
2020/07/10 PHP
javascript数组使用调用方法汇总
2007/12/08 Javascript
javascript 学习之旅 (2)
2009/02/05 Javascript
html中table数据排序的js代码
2011/08/09 Javascript
你必须知道的Javascript知识点之&quot;单线程事件驱动&quot;的使用
2013/04/23 Javascript
浏览器中url存储的JavaScript实现
2015/07/07 Javascript
基于JS2Image实现圣诞树代码
2015/12/24 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
jQuery Easyui datagrid连续发送两次请求问题
2016/12/13 Javascript
懒加载实现的分页&amp;&amp;网站footer自适应
2016/12/21 Javascript
Django+Vue.js搭建前后端分离项目的示例
2017/08/07 Javascript
用jquery获取select标签中选中的option值及文本的示例
2018/01/25 jQuery
vue-rx的初步使用教程
2018/09/21 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
2019/06/04 Javascript
优化Vue中date format的性能详解
2020/01/13 Javascript
Vuejs通过拖动改变元素宽度实现自适应
2020/09/02 Javascript
[03:02]辉夜杯主赛事第二日 每日之星
2015/12/27 DOTA
python中的reduce内建函数使用方法指南
2014/08/31 Python
初步探究Python程序的执行原理
2015/04/11 Python
详解Django通用视图中的函数包装
2015/07/21 Python
CSS3实现复选框动画特效示例代码
2016/09/27 HTML / CSS
HTML5: Web 标准最巨大的飞跃
2008/10/17 HTML / CSS
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
S’well Bottle保温杯官网:绝缘不锈钢水瓶
2018/05/09 全球购物
巴西购物网站:Submarino
2020/01/19 全球购物
预备党员入党自我评价范文
2014/03/10 职场文书
道德模范事迹材料
2014/12/20 职场文书
世界各国短波电台对东亚播送时间频率表(SW)
2021/06/28 无线电
PostgreSQL自动更新时间戳实例代码
2021/11/27 PostgreSQL