DB受影响行数

2024-02-29  本文已影响0人  M_lear

update返回值是受影响的行数(Affected rows)。
对于条件update,我们有时需要根据返回的受影响行数判断更新是否成功。

有一种情况需要格外注意,如果字段已经是你想要更新的目标值了,比如你想把A记录的字段b更新为1,但是在你更新之前A记录的字段b已经是1了。这种情况下,Mysql和其他主流关系数据库的表现不一样。
Mysql返回的受影响行数是0(认为行没有被更改),而其他主流DB,如PostgreSQL、Oracle、SQL Server返回的受影响行数则是1(认为更新成功了)。

例如对这个表,执行UPDATE update_status SET status = 1 WHERE id = 1;

image.png

Mysql得到的结果是:

image.png

Postgres得到的结果是:

image.png
上一篇下一篇

猜你喜欢

热点阅读