如何在指定的小时后自动删除数据库中的数据?

时间:2011-05-01 17:46:42

标签: php mysql model-view-controller

我是mysql的新手我使用的是phpmyadmin 5.1.43。用户执行交易让我说他预订了一个座位,我希望在预订48小时后如果他不支付预订,他的预订应该自动取消?我该怎么做?

3 个答案:

答案 0 :(得分:4)

有几种可能的方法。您选择哪个取决于系统考虑因素:

  • 安排作业定期运行,可能每分钟,每小时或每天执行一次定期清理功能。
  • 保留记录,但在处理这些记录时,查询包含用于排除过期记录的限定逻辑。过期的记录留在那里用于审计和历史目的。

答案 1 :(得分:2)

在X时间之后删除行不是解决此类问题的关系方式。相反,您可能希望在表中添加足够的数据,以便您可以查询它并获得所需的结果。

IE中。添加一列“expire_at”或类似日期时间,当您查询表时添加一个子句WHERE expire_at < NOW()

您甚至可以将其添加到视图中,然后您可以更轻松地进行查询。

答案 2 :(得分:0)

每当有人要求预订时,你都可以这样做。如果座位已经由某人保留,并且预订的时间戳已在特定列上注册,则可以通过将其与当前日期进行比较来获得预订的“年龄”:

mysql> select timestampadd(HOUR, 48, now());
+-------------------------------+
| timestampadd(HOUR, 48, now()) |
+-------------------------------+
| 2011-05-03 14:53:34           |
+-------------------------------+
1 row in set (0.00 sec)

(我选择函数now()来说明这一点,您可以用特定列的名称替换now()。)。然后,如果它已过期,则让新保留覆盖前一个保留。