insert on duplicate key的返回值在mysql的不同版本间的返回值是不同的。
证明如下:
数据库定义:
CREATE TABLE `test3` (
`a` int(11) NOT NULL auto_increment,
`b` int(11) NOT NULL,
`c` int(11) NOT NULL default '0',
PRIMARY KEY (`a`),
UNIQUE KEY `b` (`b`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
返回值如下:
5.0.27 |
5.5.20 | |
第一次 |
1 |
1 |
第二次 |
2 |
2 |
第三次 |
2 |
1 |
在数据库驱动参数中增加useAffectedRows=true之后
返回值如下:
5.0.27 |
5.5.20 | |
1 |
1 |
1 |
2 |
2 |
2 |
3 |
2 |
0 |
从使用上来看,如果使用到了insert on duplicate key的返回值,那么应该在驱动中增加useAffectedRows=true的参数,并且在判断是否是更新操作的时候避免使用==2的判断,而是使用<>1的判断。