当按UPDATE
更新行时,是否始终保证该行是“受影响的”,并且只有这样,如果UPDATE
语句中设置的某些字段将保留{{1 }?
这是否意味着对于任何两个具有常量字段值的直接顺序NOT field='value'
,第二个总是会“影响”0行?
答案 0 :(得分:0)
是的,因为结果只显示sql查询中没有更改的行,所以第二个查询不会改变任何行,因为第一个查询已经完成
答案 1 :(得分:0)
在两个计数上都正确(虽然MySQL中不存在==运算符 - 我假设你只是为了清晰起见而使用它)。
受影响的行只会计算已更改的行。因此,如果没有任何字段被更改,则不会有任何影响。请注意,此更改的比较区分大小写,与查询中实际使用的不同。
修改:http://dev.mysql.com/doc/refman/5.1/en/mysql-affected-rows.html
对于UPDATE语句,默认情况下受影响的行值是实际更改的行数。如果在连接到mysqld时指定了mysql_real_connect()的CLIENT_FOUND_ROWS标志,则受影响的行值是“找到”的行数;也就是说,由WHERE子句匹配。
我正在寻找一个关于MySQL如何决定什么构成'实际改变'的链接。基于措辞,很明显假设它们意味着如果只有前后值在二进制级别上不相等,它才算作实际改变。
如果没有潜入源头,我可能无法证明这一点。