2

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

这可能吗?

附加信息:

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

4

2 回答 2

3

这个问题有两个方面:

  • 如何安排
  • 实际 SQL 语句

如何安排

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

三个选项

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

SQL 语句

如果您有一个代表 insertDate 的字段(例如 dateField),则实际的 SQL 语句非常简单...

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

您可以使用插入语句中的函数轻松生成此值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;
于 2013-06-20T01:27:42.500 回答
0

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

于 2013-06-20T01:23:45.097 回答