使用触发器自动删除 mysql 数据库日志表中的行
有人可以为我提供 mysql 5 触发器创建代码,该代码允许我在表中的总行数达到 y 时删除表中的前 x 行吗?
谢谢
Can someone provide me with a mysql 5 trigger creation code that would allow me to delete the first x number of rows in a table when the total number of rows in my table reaches y ?
Thank you
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您不能在触发触发器的同一个表上执行任何 CRUD...因此,这不能使用表上的触发器来完成,
但是您可以使用两个查询的序列。由于它是一个日志表,因此第二个表是否失败可能会或可能无关紧要。每隔一段时间,计算一下总行数并再次将其修剪到适当的大小。
编辑:更好的解决方法
一个更明智的替代方案是安排一个将运行此批处理的作业(Windows任务调度程序+ mysql.exe
或
linux + cron),这会保留只有 100 条(更改以适应)记录You cannot perform any CRUD on the same table that fires the trigger... ergo this cannot be done using a trigger on the table
You can however use a sequence of two queries. Since it is a log table, it may or may not matter if the 2nd one failed. Once in a while, count the total rows and trim it to size again.
EDITED: for a better workaround
A more sensible alternative is to schedule a job (windows task scheduler + mysql.exe
or
linux + cron) that will run this batch, which preserves only 100 (change to suit) records