是否有可能“腐烂”SQL信息?

时间:2013-06-20 01:19:05

标签: mysql sql phpmyadmin

假设我在SQL数据库中有大量信息。 我希望自动删除超过30天的信息行。

这可能吗?

其他信息:

我正在使用提供的SQL日期函数来收集日期。

2 个答案:

答案 0 :(得分:3)

这个问题有两个方面:

  • 如何安排
  • 实际SQL语句

如何安排

您有多种选择,但所有这些都围绕着您是否要安排,或者是否会触发存储过程。

三个选项

我建议选项1和2是最好的。

SQL语句

如果你有一个代表insertDate的字段(例如dateField),那么实际的SQL语句就很容易了......

delete from myTable where insertDate < DATE_SUB(NOW(), INTERVAL 1 MONTH);

您可以使用insert语句中的NOW()函数轻松生成此值,例如:

insert into myTable values (NOW(), 'value1', 'value2', ... , 'valueN');

在日结束时使用事件调度程序进行调度

如果您拥有CREATE EVENT权限,这将通过PHP MyAdmin工作。 另见:http://www.sitepoint.com/how-to-create-mysql-events/

CREATE EVENT `clean_up2`
ON SCHEDULE EVERY 1 DAY STARTS CURRENT_DATE
DO
 delete from `data` where updated_on < DATE_SUB(NOW(), INTERVAL 1 MONTH);
END;

答案 1 :(得分:0)

是。在SQL Server中,您可以创建一个存储过程来执行删除,并创建一个每天运行的SQL代理作业(或您选择的计划)