首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用触发器从mysql数据库的日志表中自动删除行

使用触发器从mysql数据库的日志表中自动删除行
EN

Stack Overflow用户
提问于 2011-01-23 09:04:57
回答 1查看 2.4K关注 0票数 3

有人能为我提供一个MySQL5触发器创建代码,允许我在表中的总行数达到y时删除表中的前x行吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-23 09:15:00

您不能在触发触发器的同一个表上执行任何CRUD ...因此,不能使用表上的触发器来完成此操作

但是,您可以使用两个查询的序列。因为它是一个日志表,所以如果第二个表失败了,可能也可能不重要。每隔一段时间,计算一下总的行数,并再次调整它的大小。

代码语言:javascript
复制
INSERT INTO LOGTABLE .....   # 1 record
DELETE FROM LOGTABLE ORDER BY ID LIMIT 1;

编辑:以获得更好的解决方法

一种更明智的替代方法是安排一个作业(windows任务调度程序+ mysql.exe or linux + cron)来运行这个批处理,它只保留100条(根据需要进行更改)记录。

代码语言:javascript
复制
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;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4771675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档