小编典典

在mysql中选择更新的行

sql

有没有简单的方法来选择更新的行?

我试图每次读取行时都存储时间戳,以便能够删除长时间未读取的数据。

首先,我首先尝试执行SELECT查询,甚至发现有点慢但是简单的解决方案,例如

 UPDATE foo AS t, (SELECT id FROM foo WHERE statement=1)q
 SET t.time=NOW() WHERE t.id=q.id

但我仍然想找到一种正常的方法来做到这一点。

我还认为先更新时间然后选择更新的行应该容易得多,但是即使如此,我也没有找到任何东西


阅读 176

收藏
2021-04-28

共1个答案

小编典典

声明该time列,如下所示:

CREATE TABLE foo (
    ...
    time TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(),
    ...)

然后,每当更新一行时,该列就会自动更新。

更新:

我认为没有方法可以在SELECT期间自动更新,因此您必须分两步进行:

UPDATE foo
SET time = NOW()
WHERE <conditions>;

SELECT <columns>
FROM foo
WHERE <conditions>;

只要不包括该time列,我都认为这应该起作用。为了最大程度的安全,您将需要使用事务来防止其他查询受到干扰。

2021-04-28