美文网首页
mysql 使用定时任务调用存储过程删除老数据

mysql 使用定时任务调用存储过程删除老数据

作者: SyKay | 来源:发表于2020-05-20 16:41 被阅读0次

前言:由于项目需要,现需要做一个定时清理mysql老数据的功能。经再三考虑,决定通过调用数据库的存储过程来执行删除数据的任务,然后创建一个事件来定时调用存储过程。


  • 实现前提

需要删除数据的表里必须有个字段,类型为date或datetime,用于记录该数据的生成时间。

  • 编写存储过程

编写删除语句:
DELETE FROM test t WHERE t.createDate < DATE_SUB(CURDATE(),INTERVAL 5 DAY);

上面sql表示删除五天之前的老数据。编写后需要确认是否可以使用。
CURDATE() :时间函数,表示返回当前日期
createDate:table的字段,表示该行数据的创建时间(类型为date或datetime)
DATE_SUB(end_date,INTERVAL expr unit):表示的隔了多少单位之前的日期
如果是需要查之后的日期,可以使用DATE_ADD(start_date,INTERVAL expr unit)函数,两个函数查询结果相反,一个往前查日期,一个往后查日期
unit的取值主要有SECOND(秒)、MINUTE(分)、HOUR(时)、DAY(天)、MONTH(月)、YEAR(年)

定义将sql保存为存储过程:

CREATE PROCEDURE delete_data()
BEGIN
  DELETE FROM test t WHERE t.createDate < DATE_SUB(CURDATE(),INTERVAL 5 DAY);
END

注意,存储过程是在cmd命令行上写的,则需要使用DELIMITER命令定义分割符,如果是navicat则不用

查看存储过程:
select * from mysql.proc where db=’数据库名’;

使用存储过程 :
call delete_data()

  • 开启事件调度器:

SET GLOBAL event_scheduler = ON;

  • 创建定时任务的事件:

create event del_event  
on schedule 
EVERY 1 DAY
STARTS '2020-3-28 00:00:00'  
do call delete_data()

表示从2020-3-28零点开始,每隔一天执行del_data存储过程

相关文章

  • mysql 存储过程和事件总结

    任务需求:定时执行的任务,调用存储过程,进行数据迁移。 存储过程相关总结:(存储过程的创建 不能伴随有if exi...

  • mysql定时任务

    创建存储过程,保留100条数据,其他删除 创建定时任务:每晚四点触发 启动定时任务:

  • MySQL存储过程与定时任务

    记录下自己写的MySQL简单存储过程和定时任务 统计有多少个app 统计定时任务 停止和删除定时任务 参考文档:m...

  • Orcale Jobs

    一、1.创建一张测试表 2.创建存储过程 实现向测试表插入数据 3.创建job定时任务 实现自动调用存储过程(当...

  • mysql 存储过程定时任务

    之前因为业务需要设计了一个数据库定时更新数据表内容的功能。开始是这样实现的: 即每隔一天刷新一下数据库 sys_u...

  • MySQL语法模板 SQL语句:函数、存储过程

    创建函数 创建存储过程 修改函数 修改存储过程 调用 删除函数 删除存储过程

  • Mysql存储过程

    阅读目录:MySQL存储过程_创建-调用-参数 存储过程:SQL中的“脚本” 创建存储过程 调用存储过程 存储过程...

  • SQL语言:存储过程

    前言 本章我们将学习数据库中的存储过程,了解什么是存储过程,以及在MySQL中创建和调用存储过程。 存储过程是什么...

  • MySQL存储过程使用解析

    mysql存储过程 存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一...

  • mysql创建定时执行存储过程任务

    sql语法很多,是一门完整语言。这里仅仅实现一个功能,不做深入研究。 目标:定时更新表或者清空表。 案例:曾经做过...

网友评论

      本文标题:mysql 使用定时任务调用存储过程删除老数据

      本文链接:https://www.haomeiwen.com/subject/paozohtx.html