有没有简单的方法来选择更新的行?
我试图每次读取行时都存储时间戳,以便能够删除长时间未读取的数据。
首先,我首先尝试执行SELECT查询,甚至发现有点慢但是简单的解决方案,例如
SELECT
UPDATE foo AS t, (SELECT id FROM foo WHERE statement=1)q SET t.time=NOW() WHERE t.id=q.id
但我仍然想找到一种正常的方法来做到这一点。
我还认为先更新时间然后选择更新的行应该容易得多,但是即使如此,我也没有找到任何东西
声明该time列,如下所示:
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列,我都认为这应该起作用。为了最大程度的安全,您将需要使用事务来防止其他查询受到干扰。