PostgreSQL:UPDATE行(如果存在)

Dmi*_*try 2 sql postgresql

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

UPDATE table1 SET ctime = now() WHERE id = 112233;
Run Code Online (Sandbox Code Playgroud)

或者select以前

IF EXISTS (SELECT 1 FROM table1 WHERE id = 112233) THEN
   UPDATE table1 SET ctime = now() WHERE id = 112233;
END IF;
Run Code Online (Sandbox Code Playgroud)

哪个查询更好地减少写操作?

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

Gor*_*off 6

这个查询:

UPDATE table1
    SET ctime = now()
    WHERE id = 112233;
Run Code Online (Sandbox Code Playgroud)

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

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

  • 另外,它会返回更改的行数,因此您可以查看更新是否实际更新了某些内容...如果您关心. (2认同)