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