2011-05-01 120 views

回答

4

有幾種可能的方法。你的選擇取決於系統的考慮:

  • 計劃作業每分鐘,每小時,或天,其執行定期清理功能週期性地運行,也許一次。
  • 保留記錄,但在處理這些記錄時,查詢包含排除過期記錄的限定邏輯。過期的記錄保留在那裏用於審計和歷史目的。
2

在X時間後刪除行並不是解決這類問題的關係方式。相反,您希望將足夠的數據添加到表中,以便您可以查詢它並獲得所需的結果。

即,添加一列「expire_at」或類似於日期時間,並且當您查詢表格時,添加一個子句WHERE expire_at < NOW()

您甚至可以將此添加到視圖中,然後您可以通過更簡單的方式查詢該視圖。

0

每當有人要求預訂時,您都可以這樣做。

mysql> select timestampadd(HOUR, 48, now()); 
+-------------------------------+ 
| timestampadd(HOUR, 48, now()) | 
+-------------------------------+ 
| 2011-05-03 14:53:34   | 
+-------------------------------+ 
1 row in set (0.00 sec) 

(我選擇:如果座位已經被人保留,保留的時間標記註冊在一個特定的列,您可以通過它與當前的日期進行比較得到保留的「年齡」功能now()來說明這一點,您將替換now()與特定列的名稱。)。然後,如果過期,則讓新的保留覆蓋前一個保留。

相關問題