PostgreSQL更新没有返回零计数

use*_*762 0 sql postgresql count sql-update

我尝试一次又一次更新具有相同值的特定记录,但它始终将受影响的行值返回为1.

update users set active = 1 where id = 304
1 row(s) affected.
Run Code Online (Sandbox Code Playgroud)

再次相同的查询

update users set active = 1 where id = 304
1 row(s) affected.
Run Code Online (Sandbox Code Playgroud)

但第二次更新应该返回0行受影响对吗?我可以知道如果不更新记录,我怎么能得到零计数.

Ste*_*ker 8

无条件地设置列的值总是"影响"它,即使新值与旧值相同.如果您只想查看该值是否现在不同,您可以检查受类似情况影响的行数

UPDATE users SET active=1 WHERE id = 304 AND active != 1;
Run Code Online (Sandbox Code Playgroud)

这样,更新查询只匹配尚未"活动"的行