mysql自動(dòng)提交的問(wèn)題
問(wèn)題描述
我使用的mysql5.5自動(dòng)提交是默認(rèn)打開的。現(xiàn)在在終端執(zhí)行一條事物。
begin;update user set username=’Lee’ where id=1;
按說(shuō)這條事物是自動(dòng)commit的才對(duì)啊,因?yàn)槟J(rèn)是自動(dòng)提交。為什么不是自動(dòng)的commit,還是在等待人工commit。
mysql的事物發(fā)現(xiàn)有個(gè)問(wèn)題,我開啟事物,然后insert一條數(shù)據(jù),沒(méi)有commit。然后select,發(fā)現(xiàn)這條數(shù)據(jù)竟然已經(jīng)加進(jìn)去了,這是什么鬼,在沒(méi)commit之前數(shù)據(jù)不應(yīng)該在內(nèi)存里的么。
然后我執(zhí)行rollback。再試圖開啟事物insert一條數(shù)據(jù),commit。這時(shí)候不對(duì)了,新產(chǎn)生的id應(yīng)該是上一條回滾的那條id才對(duì)啊,為什么是+1了呢。
問(wèn)題解答
回答1:開啟事務(wù)必須手動(dòng)提交,詳情見(jiàn)我寫的一篇事務(wù)隔離級(jí)別文章
回答2:吐槽一下,是事務(wù),不是事物……1、你已經(jīng)手動(dòng)打開了事務(wù),事務(wù)在你控制之下,所以你必須手動(dòng)提交才會(huì)生效,回滾同理;2、MySQL默認(rèn)的事務(wù)隔離級(jí)別是RR級(jí),所以可以讀到同一事務(wù)內(nèi)的數(shù)據(jù);3、自增id不受事務(wù)影響,不論成功提交還是失敗回滾,都會(huì)自增,參考資料;
其實(shí)對(duì)于這三個(gè)問(wèn)題,我也只是知其然不知其所然,但這些問(wèn)題都可以通過(guò)搜索引擎得到答案。
回答3:自動(dòng)提交是不寫begin,事務(wù)的概念沒(méi)有搞清楚,搜索有很多答案。
回答4:先把錯(cuò)別字改了。
相關(guān)文章:
1. css - 如何把一個(gè)視圖放在左浮動(dòng)定位的視圖的上面?2. python的正則怎么同時(shí)匹配兩個(gè)不同結(jié)果?3. php多任務(wù)倒計(jì)時(shí)求助4. javascript - axios請(qǐng)求回來(lái)的數(shù)據(jù)組件無(wú)法進(jìn)行綁定渲染5. javascript - vue中怎么使用原生js插件6. MySQL的聯(lián)合查詢[union]有什么實(shí)際的用處7. javascript - jquery怎么讓a標(biāo)簽跳轉(zhuǎn)后保持tab的樣式8. css - 子元素跑到父元素外面9. javascript - 小demo:請(qǐng)教怎么做出類似于水滴不斷擴(kuò)張的效果?10. javascript - 請(qǐng)問(wèn)下面代碼中的...是擴(kuò)展運(yùn)算符還是操作運(yùn)算符?這樣寫是什么意思?
