我有一个表用于存储用户所做的最新操作(如程序的 ctrl + z ),但我想限制此表大约200个条目,之后,每个新条目都将删除表中最旧的条目。
是否有任何选项可以使表在SQL上以这种方式运行,或者我是否需要向程序添加一些代码来执行此操作?
答案 0 :(得分:0)
我以前见过这种想法,但我很少看到一个好想法的案例。
除了普通数据的列之外,您的表还需要这些列。
将此表限制为200行的常规方法是将检查约束添加到行号列。例如,CHECK (row_num between 1 and 200)
。 MySQL不强制执行检查约束,因此您需要使用对行号表(1到200)的外键引用。
所有插入语句都需要确定表是否已满,检查上次更新的时间,以及a)插入带有新行号的新行,或b)删除最旧的行或覆盖它。 / p>
我的建议?重新谈判这个要求。
答案 1 :(得分:0)
假设" 200"并不是一个硬性限制,换句话说,如果偶尔会有少量数量的条目超过这个数量就可以了......
不要在线进行修剪,将其作为离线流程执行,根据需要经常运行,以防止每个用户的总数不会超出"太高"
例如,一个这样的解决方案是使用crontab
每小时触发执行该查询的SQL。