mysql 事件定时器使用介绍

发布时间:2024-03-30 11:43:00

事件中定义变量的语法与之前的版本略有不同。在MySQL 5.7中,您不能直接在事件中声明和使用变量,而是需要使用SET语句来分配值给一个用户定义的会话变量。以下是一个示例,演示了如何在MySQL 5.7的事件中使用会话变量来模拟变量的行为:

DELIMITER //

CREATE EVENT count_rows_event
ON SCHEDULE
EVERY 1 DAY
DO
BEGIN
    -- 声明一个会话变量并初始化为0
    SET @total_rows = 0;

    -- 查询表的总数并将其存储到会话变量中
    SELECT COUNT(*) INTO @total_rows FROM your_table;

    -- 打印表的总数
    SELECT CONCAT('Total rows in the table: ', @total_rows);

    -- 可以根据需要使用会话变量进行其他操作
    -- 例如,将表的总数插入到另一个表中
    INSERT INTO another_table (total_rows_column) VALUES (@total_rows);
END;
//

DELIMITER ;

一、要查询是否在MySQL中启用了事件调度器,您可以执行以下查询:

SHOW VARIABLES LIKE 'event_scheduler';

二、要在MySQL中启用事件调度器,您可以执行以下命令:

SET GLOBAL event_scheduler = ON;

这将启用MySQL事件调度器,允许您创建和管理事件。请确保您具有足够的权限执行此操作。

三、案例:

-- mysql事件名称 aq_redirect_event  功能介绍:临时表 dede_aq_redirect_data 插入正时表 dede_aq_redirect 中
-- 1. 每五天触发一次,开始时间 2024-03-30 
-- 2. 每次从临时表中,取出10000数据插入正时表中
-- 3.  删除取出临时表 10000 数据
DELIMITER //

CREATE EVENT aq_redirect_event
ON SCHEDULE
EVERY 180 SECOND
COMMENT 'aq数据脚本'
DO
BEGIN

  -- 截断表
    TRUNCATE TABLE dede_aq_redirect;

  -- 插入操作
    INSERT INTO dede_aq_redirect (title, arcurl, pubdate, create_time)
    SELECT title, arcurl, pubdate, create_time FROM dede_aq_redirect_data ORDER BY id ASC LIMIT 1;

  -- 删除操作
  DELETE FROM dede_aq_redirect_data ORDER BY id ASC LIMIT 1;

END;
//

DELIMITER ;