2011-01-28 130 views
0

我想只存储最后200个数据(如果201数据到了就意味着我需要删除1行等......)到数据库中的表。是否有逻辑?数据库行数限制

感谢

回答

0

我不认为你可以在一个声明中做到这一点。假设一个表有一个主键列'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.

0

如前所述,它可能是不可能在一个这样做语句,因为您无法更新您正在选择的表,请使用单个字符标志字段,该字段在需要将某行标记为已删除时设置,因此标记的行可以被选择语句忽略并由单独的内务处理例程清除。