1、問題如標題所示;
2、情況:
a、創(chuàng)建了存儲過程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
輸入?yún)?shù)為
IN `uid` varchar(10),IN `kNum` int,IN `mNum` int
b、構(gòu)建表:
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、執(zhí)行調(diào)用:
call testPro('2017-11-24',0,1);
第一次調(diào)用結(jié)果:
第二次調(diào)用結(jié)果:
第三次調(diào)用時,就不會再累加了,結(jié)果如第二次調(diào)用一樣;
但如果,我們此時累加kNum一次:
call testPro('2017-11-24',1,0);
結(jié)果會變成這樣:
而且同樣不能再繼續(xù)累加;
請各位看看這到底是什么問題。網(wǎng)上能找的我應該都找了,實在沒能找到解釋。最接近的也就這篇文章,但是試過沒有效果:https://yq.aliyun.com/ziliao/...;
我直接復制你的表結(jié)構(gòu),sql語句,執(zhí)行沒有問題,會多次累加。但是,你的sql有點問題,每次是按照數(shù)據(jù)庫原有的值累加:kNum=kNum+kNum,mNum=mNum+mNum,并不是數(shù)據(jù)庫里的值 加上新的值。
正確的sql是:
INSERT INTO test (uid,kNum,mNum) VALUES ('2012', 0, 1) ON DUPLICATE KEY UPDATE uid=uid,kNum=VALUES(kNum)+kNum,mNum=VALUES(mNum)+mNum;
即:kNum=VALUES(kNum)+kNum
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產(chǎn)業(yè)為響應國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復興的升級產(chǎn)業(yè)鏈。利用北京大學優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓領域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。