有人可以为我提供一个 mysql 5 触发器创建代码,允许我在表中的总行数达到 y 时删除表中的前 x 行吗?
谢谢
最佳答案
您不能在触发触发器的同一个表上执行任何 CRUD...因此,这不能在表上使用触发器来完成
但是您可以使用两个查询的序列。由于它是一个日志表,因此第二个是否失败可能无关紧要。偶尔,计算总行数并再次将其调整为合适的大小。
INSERT INTO LOGTABLE ..... # 1 record
DELETE FROM LOGTABLE ORDER BY ID LIMIT 1;
已编辑以获得更好的解决方法
一个更明智的选择是安排一个作业(windows task scheduler + mysql.exe or
linux + cron)来运行这个批处理,它只保留 100(更改以适应)记录
set @sql := (select count(*) from logtable) - 100;
set @sql := concat('delete from logtable order by date limit ', @sql);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
关于sql - 使用触发器自动从 mysql 数据库中的日志表中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4771675/