您不希望触发器对此类删除进行微观管理。我有一篇旧帖子,其中我创建了一个 MySQL 事件来为您删除行(MySQL 事件不运行)
这是一个从今晚午夜开始每小时删除超过 30 天的数据的事件
USE mydata
DELIMITER $$
CREATE EVENT delete_30_day_old_data
ON SCHEDULE
EVERY 1 HOUR
STARTS CURDATE() + INTERVAL 1 DAY + INTERVAL 0 SECOND
ON COMPLETION PRESERVE
DO
BEGIN
DELETE FROM mytable WHERE datetime_column < NOW() - INTERVAL 30 DAY;
END $$
DELIMITER ;
我认为在旧行已满 30 天的那一刻拥有旧行并不重要 - 几秒/分钟/小时的延迟可能根本不会伤害你。因此,我会删除旧行,并在某个固定时间间隔运行一些计划任务/查询。
否则,您最终会为获得的每个页面视图运行额外的查询。
您不希望触发器对此类删除进行微观管理。我有一篇旧帖子,其中我创建了一个 MySQL 事件来为您删除行(MySQL 事件不运行)
这是一个从今晚午夜开始每小时删除超过 30 天的数据的事件
我将完全独立于任何触发器
当然,你必须启用 event_scheduler
首先,将其添加到
my.cnf
然后,以 root 身份登录 mysql 并运行
试试看 !!!
只需让前端显示最近 30 天的数据即可。根据资源,可能每周删除一次