MySQL中update操作的影响行数row_count问题

rabitsky 2013-04-28 11:11:07
大侠好,我在测试MySQL的update操作影响的行数时,发现怎么测试都是-1,感到疑惑与不解,在此请求大家的指点,谢谢。


SELECT VERSION(); -- 5.0.22-community-nt

SET @@autocommit = 0;

SELECT @@autocommit; -- 0

CREATE TABLE t(
id INT,
NAME VARCHAR(50),
address VARCHAR(100),
PRIMARY KEY(id,NAME)
) ENGINE =INNODB;


INSERT INTO t
(id,NAME,address)
VALUES
(1,'yubowei','weifang'),
(2,'sam','qingdao');

COMMIT;

UPDATE t
SET address = 'weifang'
WHERE id = 1
AND NAME = 'yubowei';

SELECT ROW_COUNT(); -- -1

UPDATE t
SET address = 'beijing'
WHERE id = 1
AND NAME = 'yubowei';

SELECT ROW_COUNT(); -- -1
...全文
758 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2013-04-28
  • 打赏
  • 举报
回复
当值相同的时候,从MYSQL的源代码中可以看到,MYSQL不会再去更新数据库中的内容。
ACMAIN_CHM 2013-04-28
  • 打赏
  • 举报
回复
UPDATE t SET address = 'weifang111' WHERE id = 1 AND NAME = 'yubowei'; 做个实际的更新看看,注意你原来的值'weifang' 和更新的值是相同的。
rabitsky 2013-04-28
  • 打赏
  • 举报
回复
结果依然为-1 不管是手动提交还是自动提交,结果都是-1,郁闷
wwwwb 2013-04-28
  • 打赏
  • 举报
回复
UPDATE t SET address = 'weifang' WHERE id = 1 AND NAME = 'yubowei'; COMMIT; SELECT ROW_COUNT(); 结果如何
rabitsky 2013-04-28
  • 打赏
  • 举报
回复
多谢楼上的兄台,我是在SQLyog窗口测试的,不管怎么测试,结果都是-1;但是我把代码写在存储过程中,结果就正确了。另外在cmd命令行中运行,结果也是正确的。
ACMAIN_CHM 2013-04-28
  • 打赏
  • 举报
回复
建议楼主按如下贴出你的测试结果。
mysql> UPDATE t
    -> SET address = 'beijing111'
    -> WHERE id = 1
    -> AND NAME = 'yubowei';
Query OK, 1 row affected (0.30 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql>
mysql> SELECT ROW_COUNT();
+-------------+
| ROW_COUNT() |
+-------------+
|           1 |
+-------------+
1 row in set (0.00 sec)

mysql>
rabitsky 2013-04-28
  • 打赏
  • 举报
回复
UPDATE t SET address = 'beijing' WHERE id = 1 AND NAME = 'yubowei'; SELECT ROW_COUNT(); -- -1 实际更新时也是 -1

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧