如何自动删除数据库中存在一个月的mysql记录


how to delete mysql records automatically that exist in database for a month

我想自动删除mysql表记录。我的项目是一个询价申请。客户端通过移动应用程序向服务器询问一些问题。如果euquiry中的人没有回复,问题必须在一个月后自动删除。我该怎么做。使用mysql事件?我正在使用wampserver。

如果客户要求您"删除"记录,您应该明白应该找到更好的解决方案。它并不是为用户删除记录,如果你想再次使用这些数据怎么办?

你想要的是加几个柱子。添加一个带日期的"开始时间"值,并添加一个"活动"记录,在该记录中可以声明1或0是否处于活动状态。

您可以运行一个任务将活动值更改为0,并且在应用程序中只获取那些活动的值。

对于MySQL,您可以使用以下内容:

CREATE 
EVENT `your_event` 
ON SCHEDULE EVERY 1 DAY 
DO BEGIN
UPDATE table SET active = 0 WHERE your_date < date_sub(now(), interval 1 month) 

如果你真的想,你可以在那里使用DELETE。。

实际上还没有测试过上面的代码,但它应该可以工作。

客户端要求在一个月后删除某些内容是一个严重的要求。我建议做两件事。首先,将创建日期添加到数据库中的每一行,并使用访问数据库

select t.*
from table t
where t.creationdate >= date(now()) - interval 1 month;

这样可以确保在任何查询中只获得适当的行。事实上,您可以将其封装在视图中,并且只在应用程序中使用该视图。

然后,在你空闲的时候,运行一个作业来删除任何超过一个月的内容:

delete from t
    where t.creationdate < date(now()) - interval 1 month;

使用此方法,用户将永远不会看到旧值,即使您错过了delete的运行。此外,您可以在服务器上为delete安排一段安静的时间,这样它就不会干扰其他活动。