MySQL创建定时任务

作者:老马-Max 时间:2024-01-20 15:59:34 

定时任务是老生常谈了,因为我们总是需要定时修改特定的数据。

实现它的方法肯定不止一种,但我在相当长一段时间里都是用程序编码去做的,今天突然想到“为什么一定要采用调用的方式?”,用数据库自身的能力去实现不是更好么?

通过了解,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的可能无法使用。

来源:https://www.cnblogs.com/muchengqingxin/p/7467333.html

标签:MySQL,定时,任务
0
投稿

猜你喜欢

  • Python中元组的概念及应用小结

    2022-03-28 15:01:05
  • 解析SQL Server中数据库快照的工作原理

    2009-02-19 17:04:00
  • python实现批量获取指定文件夹下的所有文件的厂商信息

    2021-12-14 20:42:27
  • Oracle不同数据库间对比分析脚本

    2010-07-26 13:24:00
  • Linux下MySQL 5.6.27 安装教程

    2024-01-15 02:51:51
  • NaviCat连接时提示"不支持远程连接的MySql数据库"解决方法

    2024-01-24 17:03:54
  • 学习Python中一些实用的库

    2022-11-02 13:55:56
  • 分享Win10 1903过TP的双机调试问题

    2023-03-09 19:02:37
  • Python 函数list&read&seek详解

    2022-02-14 03:04:21
  • python跨文件使用全局变量的实现

    2023-11-27 00:16:40
  • 详解使用Visual Studio Code对Node.js进行断点调试

    2023-07-01 07:32:34
  • PDO取Oracle lob大字段,当数据量太大无法取出的问题的解决办法

    2024-01-15 00:47:43
  • 在SQL Server中处理空值时涉及的三个问题

    2009-02-05 15:30:00
  • 可以实现在同一页面里的用多按钮进行提交吗?

    2009-11-01 18:04:00
  • MySQL下载安装配置详细教程 附下载资源

    2024-01-29 10:15:41
  • vue中el-table两个表尾合计行联动同步滚动条实例代码

    2023-07-02 17:08:56
  • Python日期的加减等操作的示例

    2021-10-06 14:28:14
  • Python 操作 ElasticSearch的完整代码

    2021-07-10 17:26:41
  • python scatter函数用法实例详解

    2021-12-17 11:51:50
  • 13个超酷的js显示时间效果

    2007-08-30 09:52:00
  • asp之家 网络编程 m.aspxhome.com