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;
Mysql得到的结果是:
image.pngPostgres得到的结果是:
image.png