使用存储过程在 MySQL 中自动删除行
您的目标是创建一个 MySQL 存储过程,从所有表中删除超过 7 天的行每天午夜。虽然存在脚本解决方案,但本文重点介绍使用 MySQL 的 EVENT 功能的更加自动化的方法。
创建过程
首先,确保启用事件调度程序:
SET GLOBAL event_scheduler = ON;
然后,创建一个每天触发的事件00:00:
CREATE EVENT `delete7DayOldRows` ON SCHEDULE EVERY 1 DAY STARTS '2023-03-01 00:00:00' ON COMPLETION PRESERVE DO -- Your delete logic here END;
定义删除逻辑
在事件的 DO 块内,指定删除逻辑。下面是一个示例:
BEGIN DECLARE tableName VARCHAR(255); DECLARE cursor CURSOR FOR SELECT table_name FROM information_schema.tables WHERE table_schema = 'your_database_name'; OPEN cursor; FETCH cursor INTO tableName; WHILE tableName IS NOT NULL DO DELETE FROM `your_database_name`.`tableName` WHERE CURDATE() - INTERVAL 7 DAY > updateDt; FETCH cursor INTO tableName; END WHILE; CLOSE cursor; END;
此逻辑会迭代指定数据库中的所有表,并删除 updateDt 列超过 7 天的行。
注意事项
以上是如何根据年龄自动删除 MySQL 中的每日行?的详细内容。更多信息请关注PHP中文网其他相关文章!