Database 数据库行数限制

Database 数据库行数限制,database,Database,我只想存储最后200个数据,若201个数据即将到来,这意味着我需要删除1行,以此类推……到数据库中的表中。有什么逻辑吗 谢谢我认为你不可能一句话就做到这一点。假设一个表有一个主键列“id”、一个数据列“dataCol”和一个时间戳列“dataTime”。以下是一种未经测试的方法,每当行数超过200时,该方法将删除最旧的行: INSERT INTO t (dataCol, dataTime) VALUE ('data', NOW); DELETE FROM t WHERE 200 < (S

我只想存储最后200个数据,若201个数据即将到来,这意味着我需要删除1行,以此类推……到数据库中的表中。有什么逻辑吗


谢谢

我认为你不可能一句话就做到这一点。假设一个表有一个主键列“id”、一个数据列“dataCol”和一个时间戳列“dataTime”。以下是一种未经测试的方法,每当行数超过200时,该方法将删除最旧的行:

INSERT INTO t (dataCol, dataTime) VALUE ('data', NOW);
DELETE FROM t
 WHERE 200 < (SELECT COUNT (*) FROM t)
   AND id = (SELECT id FROM t ORDER BY dataTime LIMIT 1);
如果由于表已满以外的任何原因而不删除数据,则可以使用另一种方法。不知道这是否更好。首先用200个条目预先填充表格。然后创建第二个表,其中包含关于第一个表中内容的簿记信息。第二个表将有一行保存以下信息:

下一个要填补的空缺 第一张桌子是否满了
其思想是在第二个表指定的索引处向第一个表中插入新数据,将第二个表的槽列模200递增,并在槽指针第一次返回到0时将整列设置为1。

如前所述,在一条语句中可能无法做到这一点,因为您无法更新要从中选择的表,请使用在需要将行标记为已删除时设置的单个char标志字段,因此select语句可以忽略标记的行,并由单独的内务管理例程清除标记的行