2014-11-01 39 views
1

我想自动删除mysql表记录。我的项目是一个查询应用程序。客户通过移动应用程序向服务器发出一些问题。如果euquiry中的人员没有回复,那么问题必须在一个月后自动删除。我可以做什么。使用mysql事件?我正在使用wampserver。如何删除自动存储在数据库中的mysql记录一个月

+0

一个cronjob是这个 – baao 2014-11-01 14:43:34

+0

一个非常简单的解决方案,它可以帮助..http://stackoverflow.com/questions/5850185/how-to-delete-data-from-database-after-specified-hours-automatically – sasi 2014-11-01 14:46:31

+0

我通常编写一个php脚本来执行维护,并使用任务计划程序每天运行该脚本。 – jeroen 2014-11-01 14:48:45

回答

0

如果客户要求您'删除'一条记录,您应该明白您应该找到更好的解决方案。不删除用户的记录,如果您想要再次使用该数据,该怎么办?

你想要的是添加几个colums。使用日期添加'开始时间'值,并添加'活动'记录,您可以在其中指定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有..

其实没有上面的代码中进行过测试,但它应该工作。

0

客户要求在一个月后删除某些东西是一项严格的要求。我会建议做两件事。首先,使用在数据库中添加一个创建日期每一行和访问数据库:

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安排在服务器上安静的时间,因此它不会干扰其他活动。

相关问题