MySQL事件调度器定时删除数据

准备

1、MySQL数据库安装 5.1.0以上;

2、数据库可视化软件(比如 navicat)

 

命令

查看数据库是否开启事件调度器

SHOW VARIABLES LIKE 'event_scheduler';

开启事件调度器

SET GLOBAL event_scheduler = ON;

创建事件调度器模板

CREATE EVENT [IF NOT EXISTS] event_name ON SCHEDULE schedule
 [ON COMPLETION [NOT] PRESERVE] [ENABLE | DISABLE] [COMMENT 'comment']

DO sql_statement; 

创建事件调度器示例

CREATE EVENT event_clean_table_data
ON SCHEDULE 
         -- 你可以自己选择 年 月 或者 日 按照你的需求去 这里是每天
        EVERY  1 DAY
     -- 一个开始一个结束,结束可以不写
        STARTS STR_TO_DATE('2022-01-01','%Y-%m-%d')
     ENDS STR_TO_DATE('2042-01-01','%Y-%m-%d')
        -- 当为on completion preserve 的时候,当event到期了,event会被disable,但是该event还是会存在
     -- 当为on completion not preserve的时候,当event到期的时候,该event会被自动删除掉
        ON COMPLETION PRESERVE
        COMMENT '定时删除数据表数据'
        
    DO BEGIN

   -- 保留数据30天
    delete from check_info WHERE create_time < DATE_SUB(CURDATE(), INTERVAL 30 DAY);

END;

 

其他命令

-- 删除事件调度器
DROP EVENT event_name ;

--关闭事件调度器
alter event event_name disable;

--开启事件调度器
alter event event_name enable;

--查看事件调度器
show events;

 

posted @ 2023-05-12 11:46  hcha0  阅读(80)  评论(0编辑  收藏  举报