2011-01-28 199 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

如前所述,它可能是不可能在一個這樣做語句,因爲您無法更新您正在選擇的表,請使用單個字符標誌字段,該字段在需要將某行標記爲已刪除時設置,因此標記的行可以被選擇語句忽略並由單獨的內務處理例程清除。