【问题标题】:How to delete data from database after specified hours automatically?如何在指定时间后自动从数据库中删除数据?
【发布时间】:2011-05-01 17:46:42
【问题描述】:

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

【问题讨论】:

    标签: php mysql model-view-controller


    【解决方案1】:

    有几种可能的方法。您选择哪个取决于系统注意事项:

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

    【讨论】:

      【解决方案2】:

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

      即。添加一列“expire_at”或与日期时间类似的列,并在查询表时添加子句WHERE expire_at < NOW()

      您甚至可以将其添加到视图中,然后以更简单的方式进行查询。

      【讨论】:

        【解决方案3】:

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

        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() 替换为特定列的名称。)。然后,如果已过期,则让新的预订覆盖之前的预订。

        【讨论】:

          猜你喜欢
          • 2013-12-17
          • 2014-03-04
          • 2017-07-27
          • 2015-11-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-22
          • 2019-03-18
          相关资源
          最近更新 更多