mysql:insert on duplicate key 版本导致问题
2012-06-08 11:51 MudooT 阅读(747) 评论(0) 编辑 收藏 举报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的判断。