1、问题如标题所示;
2、情况:
a、创建了存储过程testPro
BEGIN
insert INTO test (uid,kNum,mNum) VALUES (`uid`,`kNum`,`mNum`)
ON DUPLICATE KEY UPDATE uid=`uid`,kNum=kNum+`kNum`,mNum=mNum+`mNum`;
END
输入参数为
IN `uid` varchar(10),IN `kNum` int,IN `mNum` int
b、构建表:
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`kNum` int(11) DEFAULT NULL,
`mNum` int(11) DEFAULT NULL,
`uid` varchar(10) NOT NULL,
PRIMARY KEY (`id`,`uid`),
UNIQUE KEY `ske` (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
c、执行调用:
call testPro('2017-11-24',0,1);
第一次调用结果:
第二次调用结果:
第三次调用时,就不会再累加了,结果如第二次调用一样;
但如果,我们此时累加kNum一次:
call testPro('2017-11-24',1,0);
结果会变成这样:
而且同样不能再继续累加;
请各位看看这到底是什么问题。网上能找的我应该都找了,实在没能找到解释。最接近的也就这篇文章,但是试过没有效果:https://yq.aliyun.com/ziliao/...;
存储过程的变量名不要和字段名一致,你换成a,b,c再试试