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;