如何使用有限的条目创建SQL表?

时间:2014-04-08 23:41:01

标签: mysql sql limit

我有一个表用于存储用户所做的最新操作(如程序的 ctrl + z ),但我想限制此表大约200个条目,之后,每个新条目都将删除表中最旧的条目。

是否有任何选项可以使表在SQL上以这种方式运行,或者我是否需要向程序添加一些代码来执行此操作?

2 个答案:

答案 0 :(得分:0)

我以前见过这种想法,但我很少看到一个想法的案例。

除了普通数据的列之外,您的表还需要这些列。

  • 一个整数类型的列,用于保存行号。
  • 一个类型为timestamp(标准SQL时间戳)的列,用于保存上次更新的时间。

将此表限制为200行的常规方法是将检查约束添加到行号列。例如,CHECK (row_num between 1 and 200)。 MySQL不强制执行检查约束,因此您需要使用对行号表(1到200)的外键引用。

所有插入语句都需要确定表是否已满,检查上次更新的时间,以及a)插入带有新行号的新行,或b)删除最旧的行或覆盖它。 / p>

我的建议?重新谈判这个要求。

答案 1 :(得分:0)

假设" 200"并不是一个硬性限制,换句话说,如果偶尔会有少量数量的条目超过这个数量就可以了......

不要在线进行修剪,将其作为离线流程执行,根据需要经常运行,以防止每个用户的总数不会超出"太高"

例如,一个这样的解决方案是使用crontab每小时触发执行该查询的SQL。