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 相关文章推荐
JDBC连接的六步实例代码(与mysql连接)
May 12 MySQL
MySQL中VARCHAR与CHAR格式数据的区别
May 26 MySQL
正确使用MySQL update语句
May 26 MySQL
MySQL七种JOIN类型小结
Oct 24 MySQL
为什么MySQL8新特性会修改自增主键属性
Apr 18 MySQL
解决Mysql中的innoDB幻读问题
Apr 29 MySQL
Mysql InnoDB 的内存逻辑架构
May 06 MySQL
MySQL普通表如何转换成分区表
May 30 MySQL
MySQL中正则表达式(REGEXP)使用详解
Jul 07 MySQL
Mysql数据库group by原理详解
Jul 07 MySQL
MySQL事务的隔离级别详情
Jul 15 MySQL
SQL Server数据库的三种创建方法汇总
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数字游戏 计算24算法
2012/06/10 PHP
PHP的变量类型和作用域详解
2014/03/12 PHP
Laravel的throttle中间件失效问题解决方法
2016/10/09 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
2019/01/16 PHP
详解PHP 7.4 中数组延展操作符语法知识点
2019/07/19 PHP
php 输出缓冲 Output Control用法实例详解
2020/03/03 PHP
jquery 图片截取工具jquery.imagecropper.js
2010/04/09 Javascript
JS中数组Array的用法示例介绍
2014/02/20 Javascript
Eclipse配置Javascript开发环境图文教程
2015/01/29 Javascript
JS对字符串编码的几种方式使用指南
2015/05/14 Javascript
jQuery实现进度条效果代码
2015/12/17 Javascript
JQ中$(window).load和$(document).ready区别与执行顺序
2017/03/01 Javascript
jquery实现全选、全不选以及单选功能
2017/03/23 jQuery
JS非行间样式获取函数的实例代码
2018/06/05 Javascript
简述vue状态管理模式之vuex
2018/08/29 Javascript
javascript设计模式 ? 观察者模式原理与用法实例分析
2020/04/22 Javascript
原生JavaScript实现拖动校验功能
2020/09/29 Javascript
jquery实现抽奖功能
2020/10/22 jQuery
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
python实现将内容分行输出
2015/11/05 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
2019/03/18 Python
python的pytest框架之命令行参数详解(下)
2019/06/27 Python
Python3 中sorted() 函数的用法
2020/03/24 Python
在jupyter notebook 添加 conda 环境的操作详解
2020/04/10 Python
Python爬虫headers处理及网络超时问题解决方案
2020/06/19 Python
python+requests实现接口测试的完整步骤
2020/10/27 Python
HTML5本地存储之Web Storage应用介绍
2013/01/06 HTML / CSS
canvas实现图片镜像翻转的2种方式
2020/07/22 HTML / CSS
将一个文本文件的内容按倒序打印出来
2015/01/05 面试题
Linux管理员面试经常问道的相关命令
2013/04/29 面试题
什么是SCM(软件配置管理)
2014/08/16 面试题
男方父母证婚词
2014/01/12 职场文书
2014年学校工会工作总结
2014/12/06 职场文书
医学生自荐信范文
2015/03/05 职场文书
工作收入证明模板
2015/06/12 职场文书
Java存储没有重复元素的数组
2022/04/29 Java/Android