大侠好,我在测试MySQL的update操作影响的行数时,发现怎么测试都是-1,感到疑惑与不解,在此请求大家的指点,谢谢。
SELECT VERSION(); -- 5.0.22-community-ntSET @@autocommit = 0;SELECT @@autocommit; -- 0CREATE 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(); -- -1UPDATE t
SET address = 'beijing'
WHERE id = 1
AND NAME = 'yubowei';
SELECT ROW_COUNT(); -- -1
MySQLupdae row_countupdat row_count
SELECT VERSION(); -- 5.0.22-community-ntSET @@autocommit = 0;SELECT @@autocommit; -- 0CREATE 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(); -- -1UPDATE t
SET address = 'beijing'
WHERE id = 1
AND NAME = 'yubowei';
SELECT ROW_COUNT(); -- -1
MySQLupdae row_countupdat row_count
UPDATE t
SET address = 'weifang'
WHERE id = 1
AND NAME = 'yubowei';
COMMIT;
SELECT ROW_COUNT();
结果如何
SET address = 'weifang111'
WHERE id = 1
AND NAME = 'yubowei';
做个实际的更新看看,注意你原来的值'weifang' 和更新的值是相同的。
SET address = 'beijing'
WHERE id = 1
AND NAME = 'yubowei'; SELECT ROW_COUNT(); -- -1实际更新时也是 -1
-> SET address = 'beijing111'
-> WHERE id = 1
-> AND NAME = 'yubowei';
Query OK, 1 row affected (0.30 sec)
Rows matched: 1 Changed: 1 Warnings: 0mysql>
mysql> SELECT ROW_COUNT();
+-------------+
| ROW_COUNT() |
+-------------+
| 1 |
+-------------+
1 row in set (0.00 sec)mysql>