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