删除mysql中的先前数据

时间:2013-01-09 09:41:13

标签: mysql database

我有一个数据库,每小时都会定期填充表格。现在数据量已经增长了很多。 我只想存储10天的数据。每一天都要自动删除所有其他内容。

我怎么能在mysql中做到这一点?

3 个答案:

答案 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