on duplicate key update 受影响行数为 2

2016-06-14 20:53:57 +08:00
 EthanLiao
mysql>INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;
mysql>UPDATE table SET c=c+1 WHERE a=1;
如果行作为新记录被插入,则受影响行的值为 1 ;如果原有的记录被更新,则受影响行的值为 2 。
明明只有原有的记录被更新了,为什么受影响的行数会是 2 呢?
3486 次点击
所在节点    问与答
1 条回复
Infernalzero
2016-06-14 21:38:59 +08:00
insert 一次 update 一次, affected-rows 为 2 还是好理解的吧
如果也是 1 的话如何知道本次执行是插入了新的数据还是更新了原有的数据?
倒是 java 的 mysql-connector 有个相关的坑,如果连接参数不加 useAffectedRows=true 的话返回值始终是匹配到的行而不是受影响的行...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/285738

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX