我是mysql的新手我使用的是phpmyadmin 5.1.43。用户执行交易让我说他预订了一个座位,我希望在预订48小时后如果他不支付预订,他的预订应该自动取消?我该怎么做?
答案 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()
。)。然后,如果它已过期,则让新保留覆盖前一个保留。