如果postgres中出现某种情况,如何删除行

时间:2019-04-08 19:24:09

标签: database postgresql

我在数据库中有一些值。

我连续有一列timestamp

所以我有hash个组的标识。

我可以按(查询A)从组中获取最长时间:

SELECT last_hit as time
FROM cache 
WHERE hash = 'bba04f6985f560446c122d235ed2e51bf7c10864' 
ORDER BY time DESC 
LIMIT 1 

如果查询结果早于30分钟,如何删除所有项目(WHERE hash = 'bba04f6985f560446c122d235ed2e51bf7c10864

谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

获取当前时间戳,并从中减去该列中的时间戳。然后比较一下30分钟的间隔。

DELETE FROM cache
       WHERE hash = 'bba04f6985f560446c122d235ed2e51bf7c10864'
             AND statement_timestamp() - last_hit > '00:30:00'::interval;

statement_timestamp()获取语句开始时的当前时间戳。其他选项包括now(),用于获取事务开始的时间戳; clock_timestamp(),其在语句执行期间发生变化。根据您的需要进行更改。可以在documentation中找到更多信息。