PostgreSQL:UPDATE行(如果存在)

时间:2017-06-11 16:03:59

标签: sql postgresql

只有当行存在时,我才需要在表中更新行。

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;

哪种查询更能减少写入操作?

出于性能目的,我是否需要在UPDATE之前执行SELECT以检查行是否存在?

1 个答案:

答案 0 :(得分:5)

此查询:

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

完全符合您的要求。它会更新符合WHERE条件的所有行 - 超过零行。

如果您担心效果,请在table1(id)上创建索引。如果id是主键,那么它已经有一个索引。