MySQL5.1及之后就支持了事件。

查看MySQL是否开启了事件功能

show variables like '%sc%';

+----------------------------------------------------------+-------+
| Variable_name                                            | Value |
+----------------------------------------------------------+-------+
| disconnect_on_expired_password                           | ON    |
| event_scheduler                                          | ON    |

event_sheduler是ON开启的。

如果是OFF,则需要手动开启:
在my.cnf中的[mysqld]部分添加如下内容,然后重启mysql(mysql重启命令:service mysqld restart)
event_scheduler=ON

创建事件

切换到目标数据库
use database;

create event e_delete_temp_humd on schedule every 30 second do delete from temp_humd where timestamp < (CURRENT_TIMESTAMP() + INTERVAL -7 DAY);

e_delete_temp_humd:事件名称
30 second:每30秒执行
temp_humd:需要删除数据的表名称
timestamp:表中的时间字段(需要建表的时间就创建好,类型选择timestamp,默认CURRENT_TIMESTAMP,额外DEFAULT_GENERATED)
7 DAY:指定的时间

创建一条名为e_delete_temp_humd的事件,每30秒执行一次,删除temp_humd表中7天之前的数据

如果事先存在这个事件可以使用如下命令进行删除:
drop event if exists e_delete_temp_humd;

查看事件:
show events;

如果有安装phpmyadmin也可以在网页上操作


参考资料:
MYSQL:指定时间删除过期数据
mysql定时删除过期数据记录的简单方法
mysql通过事件定时删除过期数据记录方法

标签: none

评论已关闭