2009-02-06 191 views
3

我搜索了一遍,搜索了MYSQL文檔ad nauseam,找不到一個簡潔的方式來自動刪除超過給定時間範圍的記錄。我已經能夠在5.1中得到一個查詢,在當前時間的DIFF函數中將TIMESTAMP值轉換爲DATETIME,以查看它是否符合到期條件。我讀過5.1現在有能力運行計劃任務,但沒有太多配置它的方式。我沒有爲此使用觸發器。在MySQL中自動刪除過期記錄的方法?

在MySQL文檔爲5.1,它是指創建事件:

'CREATE 
[DEFINER = { user | CURRENT_USER }] 
EVENT 
[IF NOT EXISTS] 
event_name  
ON SCHEDULE schedule 
[ON COMPLETION [NOT] PRESERVE] 
[ENABLE | DISABLE | DISABLE ON SLAVE] 
[COMMENT 'comment'] 
DO sql_statement; 

schedule: 
AT timestamp [+ INTERVAL interval] ... 
| EVERY interval 
[STARTS timestamp [+ INTERVAL interval] ...] 
[ENDS timestamp [+ INTERVAL interval] ...] 

interval: 

我目前使用蟾蜍(其一直是天賜)。我的查詢有效地刪除了超過30分鐘的任何記錄。我只需要找到這個事件是如何被調用的...

謝謝!

回答

5

您正在談論使用MySQL Scheduler。一旦你創建了這個事件,MySQL會在你配置它的任何間隔時自動調用它。如果您在設置時遇到問題,請發佈查詢和錯誤信息。

1

編寫一個查詢,讓它每隔一段時間就在一份工作上運行。說,每隔30分鐘左右檢查一次過期的行。

0

如果它不一定是確切的,而你只是看家,你可以把這個過程與另一個過程聯繫起來。如果你能負擔得起的時間。

如果您有一箇舊的發票文件,在月末運行時清除它(可能有很多記錄,但是它是批處理過程)。在添加新庫存項目時清除舊庫存項目(不太頻繁但可能更少的記錄)。保持訪問日誌表?當它最近的記錄落在與今天不同的一天時清除它。 (對於低流量日誌文件)等等。