假设我在 SQL 数据库中有多行信息。 我希望自动删除超过 30 天的信息行。
这可能吗?
其他信息:
我正在使用提供的 SQL 日期函数来收集日期。
最佳答案
这个问题有两个方面:
- 如何安排
- 实际的 SQL 语句
如何安排
您有多个选择,但所有这一切都围绕着您是否会安排,或者是否会触发存储过程。
三个选项
- 使用MySql事件调度:http://dev.mysql.com/doc/refman/5.1/en/events-overview.html
- 通过操作系统(CRON、SCHEDULED TASK)安排使用 SQL(PHP 脚本、Java 等)的应用的执行
- 有一个触发器,每次对表进行更改时都会执行存储过程。
我建议选项 1 和 2 是最好的。
SQL语句
实际的 SQL 语句非常简单,只要您有一个代表 insertDate 的字段(例如 dateField)...
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;
关于mysql - 请问 "decay"有可能是SQL信息吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17203860/