2014-11-01 134 views
1

我想自動刪除mysql表記錄。我的項目是一個查詢應用程序。客戶通過移動應用程序向服務器發出一些問題。如果euquiry中的人員沒有回覆,那麼問題必須在一個月後自動刪除。我可以做什麼。使用mysql事件?我正在使用wampserver。如何刪除自動存儲在數據庫中的mysql記錄一個月

+0

一個cronjob是這個 – baao 2014-11-01 14:43:34

+0

一個非常簡單的解決方案,它可以幫助..http://stackoverflow.com/questions/5850185/how-to-delete-data-from-database-after-specified-hours-automatically – sasi 2014-11-01 14:46:31

+0

我通常編寫一個php腳本來執行維護,並使用任務計劃程序每天運行該腳本。 – jeroen 2014-11-01 14:48:45

回答

0

如果客戶要求您'刪除'一條記錄,您應該明白您應該找到更好的解決方案。不刪除用戶的記錄,如果您想要再次使用該數據,該怎麼辦?

你想要的是添加幾個colums。使用日期添加'開始時間'值,並添加'活動'記錄,您可以在其中指定1或0爲有效或無效。

您可以運行一項任務將活動值更改爲0,並且在您的應用程序中只能獲取活動的那些人。

對於MySQL,你可以使用以下命令:

CREATE 
EVENT `your_event` 
ON SCHEDULE EVERY 1 DAY 
DO BEGIN 

UPDATE table SET active = 0 WHERE your_date < date_sub(now(), interval 1 month) 

如果你真的想,你可以明顯使用DELETE有..

其實沒有上面的代碼中進行過測試,但它應該工作。

0

客戶要求在一個月後刪除某些東西是一項嚴格的要求。我會建議做兩件事。首先,使用在數據庫中添加一個創建日期每一行和訪問數據庫:

select t.* 
from table t 
where t.creationdate >= date(now()) - interval 1 month; 

這可確保您將只得到任何查詢相應的行。事實上,你可以將它包裝在一個視圖中,只在你的應用程序中使用視圖。

然後,在您的休閒,運行作業刪除任何超過一個月以上:

delete from t 
    where t.creationdate < date(now()) - interval 1 month; 

使用這種方法,用戶將不會看到一箇舊值,即使你錯過運行delete。另外,您可以將delete安排在服務器上安靜的時間,因此它不會干擾其他活動。