假设我在SQL数据库中有大量信息。 我希望自动删除超过30天的信息行。
这可能吗?
其他信息:
我正在使用提供的SQL日期函数来收集日期。
答案 0 :(得分:3)
这个问题有两个方面:
您有多种选择,但所有这些都围绕着您是否要安排,或者是否会触发存储过程。
三个选项
我建议选项1和2是最好的。
如果你有一个代表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代理作业(或您选择的计划)