PostgreSQL:如果存在则更新行

6

只有在行存在的情况下,我才需要更新表中的行。

UPDATE table1 SET ctime = now() WHERE id = 112233;

或者在之前加上 select

IF EXISTS (SELECT 1 FROM table1 WHERE id = 112233) THEN
   UPDATE table1 SET ctime = now() WHERE id = 112233;
END IF;

如何减少写操作的查询负担?

为了提高性能,我需要在更新之前进行SELECT以检查行是否存在吗?

1个回答

11

这个查询:

UPDATE table1
    SET ctime = now()
    WHERE id = 112233;

完全按照您的意愿进行操作。它会更新所有匹配 WHERE 条件的行,即使是零行。

如果您关心性能,请在 table1(id) 上创建索引。如果 id 是主键,则已经有索引了。


3
此函数还会返回更改的行数,因此您可以查看更新是否实际更改了内容。如果您关心的话。 - pbuck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接