我有一个数据库,每小时都会定期填充表格。现在数据量已经增长了很多。 我只想存储10天的数据。每一天都要自动删除所有其他内容。
我怎么能在mysql中做到这一点?
答案 0 :(得分:0)
多个选项..
写一个cron job
来做这件事。 (使用PHP / ASP / JSP - 你正在使用的是什么)
在mysql中安排Event
CREATE EVENT `event_name`
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON SLAVE]
DO BEGIN
DELETE * FROM tablename WHERE date < CURRENT_DATE - INTERVAL 10 DAY
END;
了解更多信息请转到http://www.sitepoint.com/how-to-create-mysql-events/
否则INSERT会有trigger
并相应地删除记录(此处将调用所有插入触发器的问题)。
答案 1 :(得分:0)
CREATE EVENT 'eventname' ON
SCHEDULE EVERY 24 HOUR STARTS '2013-01-09 10:00:00'
ON COMPLETION NOT PRESERVE ENABLE
COMMENT 'Clears out old data table each day.'
DO
delete * from tablename WHERE fieldwithdateofinput < CURRENT_DATE - INTERVAL 10 DAY
这将使每24小时触发一个事件,从2013-01-09 10:00:00开始,假设您在输入该记录时有一个具有注册日期的字段(fieldwithdateofinput)。
答案 2 :(得分:0)
您有2个选项。
1.Event Scheduler
首先创建表并创建事件,以便在3周前删除执行删除查询记录。
CREATE EVENT `ex1` ON SCHEDULE
EVERY 1 DAY
ON COMPLETION NOT PRESERVE
ENABLE
COMMENT ''
DO BEGIN
DELETE FROM table WHERE DATEDIFF(NOW(),TimeStampColumn) > 10
END
//for 3 weeks
注意:旧版本的mysql没有事件调度程序
<强> 2。创建cron作业
file1.sql
DELETE FROM table WHERE DATEDIFF(NOW(),TimeStampColumn) > 10
安排此命令:
mysql -uusername -ppassword&lt; /path/to/file1.sql