mysql存储过程update无效_mysql存储过程使用on duplicate key update无法正常update

本文探讨了一个关于MySQL存储过程的问题,该问题涉及到ON DUPLICATE KEY UPDATE语句在特定情况下的行为。当尝试插入重复的键值时,预期的字段值未按预期进行累加。通过分析创建的存储过程、表结构和调用示例,发现更新逻辑存在异常。文章寻求解决方案并分享了已尝试但无效的参考资料。
摘要由CSDN通过智能技术生成

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);

第一次调用结果:

73f8ca5971cd5e96db6f901570c92d85.png

第二次调用结果:

f532a84056a00143c3a9ef5d887cd2b2.png

第三次调用时,就不会再累加了,结果如第二次调用一样;

但如果,我们此时累加kNum一次:

call testPro('2017-11-24',1,0);

结果会变成这样:

849874a0a0aa1fe01665d1d35cd4001d.png

而且同样不能再继续累加;

请各位看看这到底是什么问题。网上能找的我应该都找了,实在没能找到解释。最接近的也就这篇文章,但是试过没有效果:https://yq.aliyun.com/ziliao/...;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值