1

当通过 更新一行时UPDATE,是否总是保证该行受到“影响”,并且只有在UPDATE语句中设置的某些字段才会成立NOT field='value'

这是否也意味着对于UPDATE具有恒定字段值的任何两个直接顺序的 ',第二个将始终“影响”0 行?

4

2 回答 2

0

是的,因为结果只显示没有在 sql 查询中更改的行,所以第二个查询不会更改任何行,因为第一个查询已经完成

于 2012-03-22T09:58:35.437 回答
0

在这两个方面都正确(尽管 == 运算符在 MySQL 中不存在——我假设您只是为了清楚起见才使用它)。

受影响的行将只计算已更改的行。因此,如果没有更改任何字段,则不会受到任何影响。请注意,更改的这种比较区分大小写,与查询中实际使用的比较不同。

编辑:http ://dev.mysql.com/doc/refman/5.1/en/mysql-affected-rows.html

对于 UPDATE 语句,默认情况下,affected-rows 值是实际更改的行数。如果在连接到 mysqld 时将 CLIENT_FOUND_ROWS 标志指定给 mysql_real_connect(),那么受影响的行值是“找到”的行数;也就是说,由 WHERE 子句匹配。

我正在寻找有关 MySQL 如何决定“实际更改”的内容的链接。根据措辞,很明显可以假设它们意味着只有当前后值在二进制级别上不相等时才会算作实际更改。

如果不深入研究源代码,我可能无法证明这一点。

于 2012-03-22T09:58:36.533 回答