首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL等价性与更新

问MySQL等价性与更新
EN

Stack Overflow用户
提问于 2012-03-22 17:53:06
回答 2查看 44关注 0票数 1

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

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

EN

回答 2

Stack Overflow用户

发布于 2012-03-22 17:58:35

是,因为结果仅显示sql查询中更改的行数,因此第二个查询不会更改任何行,因为第一个查询已经完成

票数 0
EN

Stack Overflow用户

发布于 2012-03-22 17:58:37

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

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

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

对于UPDATE语句,

-rows值默认情况下是实际更改的行数。如果在连接到mysqld时为mysql_real_connect()指定了CLIENT_FOUND_ROWS标志,那么mysql_real_connect-rows值就是“找到”的行数;也就是说,与WHERE子句匹配。

我正在寻找一个链接,关于MySQL如何决定哪些协议‘实际’改变了。根据措辞,很明显,他们的意思是,只有当之前和之后的值在二进制级别上不相等时,它才会被视为实际更改。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9819834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档