首页 > 数据库 >MySQL 新建事件执行存储过程

MySQL 新建事件执行存储过程

时间:2024-06-13 17:48:17浏览次数:25  
标签:存储 rows 删除 记录 新建 MySQL error event delete

开启事件调度器

SET GLOBAL event_scheduler = ON;

编写事件

注意:命令行会将分号【;】识别为结束符,可以使用navicat创建事件;或者使用DELIMITER关键字替换分号

/* 如果 error_event 事件存在, 则先删除它 */
DROP EVENT IF EXISTS error_event;
/* 创建一个名为 error_event 的事件 */
CREATE EVENT error_event
/* 每 10 秒钟执行一次 */
ON SCHEDULE EVERY 10 SECOND
/* 从当前时间开始执行 */
STARTS CURRENT_TIMESTAMP
DO
  /* 执行以下存储过程 */
  BEGIN
    /* 最大记录数 */
    DECLARE max_rows INT DEFAULT 1000000; 
    /* 删除记录数限制 */
    DECLARE delete_Limit INT DEFAULT 1000;
    /* 删除记录数 */
    DECLARE delete_rows INT; 
    /* 总记录数 */
    DECLARE total_rows INT;
    /* 查询总记录数 */
    SELECT COUNT(*) INTO total_rows FROM t_error;
    /* 删除超过的记录 */
    IF total_rows > max_rows THEN
      /* 计算需要删除的记录数 */
      SET delete_rows = total_rows - max_rows;
      IF delete_rows > delete_Limit THEN
        SET delete_rows = delete_Limit;
      END IF;
      /* 删除指定数量的记录 */ 
      DELETE FROM t_error ORDER BY create_time ASC LIMIT delete_rows;
    END IF;
    /* 删除指定数量的过期记录 */
    DELETE FROM t_error WHERE create_time < DATE_SUB(NOW(), INTERVAL 30 DAY) LIMIT delete_Limit;
  END;

 注意:命令行会将分号【;】识别为结束符,可以使用navicat创建事件;或者使用DELIMITER关键字替换分号

DELIMITER $$

/* 如果 error_event 事件存在, 则先删除它 */
DROP EVENT IF EXISTS error_event
$$
/* 创建一个名为 error_event 的事件 */
CREATE EVENT error_event
/* 每 10 秒钟执行一次 */
ON SCHEDULE EVERY 10 SECOND
/* 从当前时间开始执行 */
STARTS CURRENT_TIMESTAMP
DO
  /* 执行以下存储过程 */
  BEGIN
    /* 最大记录数 */
    DECLARE max_rows INT DEFAULT 1000000; 
    /* 删除记录数限制 */
    DECLARE delete_Limit INT DEFAULT 1000;
    /* 删除记录数 */
    DECLARE delete_rows INT; 
    /* 总记录数 */
    DECLARE total_rows INT;
    /* 查询总记录数 */
    SELECT COUNT(*) INTO total_rows FROM t_error;
    /* 删除超过的记录 */
    IF total_rows > max_rows THEN
      /* 计算需要删除的记录数 */
      SET delete_rows = total_rows - max_rows;
      IF delete_rows > delete_Limit THEN
        SET delete_rows = delete_Limit;
      END IF;
      /* 删除指定数量的记录 */ 
      DELETE FROM t_error ORDER BY create_time ASC LIMIT delete_rows;
    END IF;
    /* 删除指定数量的过期记录 */
    DELETE FROM t_error WHERE create_time < DATE_SUB(NOW(), INTERVAL 30 DAY) LIMIT delete_Limit;
  END;
$$
  
DELIMITER ;
  

 

翻译

搜索

复制

标签:存储,rows,删除,记录,新建,MySQL,error,event,delete
From: https://www.cnblogs.com/smartnn/p/18246390

相关文章

  • 2Gb 256Mx8 KTDM2G3C818BGCEAT KTDM2G3C818BGIEAT(SDRAM) KTM4GH1AHI01 KTM8GL1ASI01
    一、DDR3(L)SDRAM概述SMART’sDDR3(L)SDRAM组件与行业广泛兼容,并提供x8和x16配置。这些1.35v(DDR3L)和1.5V(DDR3)器件采用标准78和96引脚网格阵列封装,时钟速度为1866Mbps,密度为1Gb、2Gb和4Gb。宽/汽车工作范围器件也针对汽车AEC-Q1002类应用进行了测试和认证。DDR3(L)SDRAM......
  • Linux系统的mysql如何导出表数据
    在Linux系统上,我们可以使用mysqldump命令来导出MySQL数据库中的表数据。mysqldump是一个用于备份数据库的命令行工具,它可以将整个数据库或特定的表导出为SQL脚本文件,以便在其他环境中恢复或迁移数据。本文将介绍如何使用mysqldump命令导出表数据,并提供相关的代码示例和流程图。1......
  • linux 下MySQL命令行导出csv文件格式
    从数据库服务器导出1、登录mysqlmysql-uroot-p2、切换数据库usedatabase3、导出文件命令SELECTid,column1,column2FROMtableINTOOUTFILE'/tmp/mysqlfiles/table.csv'FIELDSTERMINATEDBY','ENCLOSEDBY'"'LINESTERMINATEDBY'n' sel......
  • MySQL The instance is already part of another Replication Group
    MySQLInnoDBCluster(测试环境为MySQL8.0.35)将一个实例重新加入集群时,遇到了下面这个错误"Theinstance'dbu03:3306'isalreadypartofanotherReplicationGroup"MySQL  10.160.2.55:3306 ssl  JS > cluster.addInstance('[email protected]:3306')ERROR: Ru......
  • mysql部署
    首先在mysql官网上下载mysql的软件包#useradd-r -s/bin/falsemysql#创建程序账号#tar-xfmysql-5.7.31-linux-glibc2.12-x86_64.tar.gz#解压,跟上面的命令重复了#mvmysql-5.7.31-linux-glibc2.12-x86_64/usr/local/mysql#移动#cd/usr/local/mysql/#mkdirmysq......
  • MySQL 被 PG 干翻了。。
    StackOverflow发布了2023年开发者调查报告,据称共计超过9万名开发者参与了此次调查。完整报告包含了受访开发者画像,以及关于开发技术、AI、职业、社区等方面的内容。本文主要介绍关于开发技术和AI的部分。懒人目录:最流行编程语言:JavaScript最“赚钱”编程语言......
  • MySQL周内训参照、DDL与DML语句
    根据ER图与数据库模型图设计DDL语句无注释DDLCREATETABLEuser(user_idINTAUTO_INCREMENTPRIMARYKEY,usernameVARCHAR(50)NOTNULLUNIQUE,passwordVARCHAR(255)NOTNULL,emailVARCHAR(100)UNIQUE,phoneVARCHAR(20)UNIQUE,creat......
  • MySQL 被 PG 干翻了。。
    StackOverflow发布了2023年开发者调查报告,据称共计超过9万名开发者参与了此次调查。完整报告包含了受访开发者画像,以及关于开发技术、AI、职业、社区等方面的内容。本文主要介绍关于开发技术和AI的部分。懒人目录:最流行编程语言:JavaScript最“赚钱”编程语言......
  • MySQL 被 PG 干翻了。。
    StackOverflow发布了2023年开发者调查报告,据称共计超过9万名开发者参与了此次调查。完整报告包含了受访开发者画像,以及关于开发技术、AI、职业、社区等方面的内容。本文主要介绍关于开发技术和AI的部分。懒人目录:最流行编程语言:JavaScript最“赚钱”编程语言......
  • MySQL周内训参照2、DDL与DML语句
     DDL--创建用户表CREATETABLEuser(--用户ID,主键,自增user_idINTAUTO_INCREMENTPRIMARYKEY,--用户名,非空且唯一usernameVARCHAR(50)NOTNULLUNIQUE,--密码,非空,假设密码使用哈希加密存储passwordVARCHAR(255)NOTNULL,--......