91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql中autocommit與sql回滾有什么關系

發布時間:2021-08-17 02:03:04 來源:億速云 閱讀:135 作者:chen 欄目:數據庫

本篇內容主要講解“mysql中autocommit與sql回滾有什么關系”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“mysql中autocommit與sql回滾有什么關系”吧!

mysql中autocommit與sql回滾的關系
 
今天群里有人問了一個mysql中sql執行出錯是否會回滾的問題。第一個感覺這個答案應該和autocommit有關。
 
首先交代下背景,問題復現一下:
執行sql:
  www.2cto.com  
1
root<a href="http://my.oschina.net/u/203327" target="_blank" rel="nofollow">@wlb</a>  12:48:30>update wlb_schedule_02 set status=status*10 where gmt_create<="2012-08-16 1:00:00";
然后報了error:
1
ERROR 1197 (HY000): Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage; increase this mysqld variable and try again
首先這是對多行進行了操作,如果其中一行出錯或者執行到某行時出錯,那么之前的語句是否會回滾?答案是肯定的。
但是什么時不會回滾,什么時候又會回滾呢?這個和autocommit又有什么關系呢?
1
show VARIABLES like '%autocommit%';
顯示autocommit是否打開,然后關閉autocommit
1
set autocommit=0;
然后對test1表插入數據,其中那么字段是非空的,所以插入空值時肯定報錯了
1
INSERT INTO test1  (age,name) VALUEs (20,'1');
2
INSERT INTO test1  (age,name) VALUEs (20,'2');
3  www.2cto.com  
INSERT INTO test1  (age,name) VALUEs (20,null);
4
INSERT INTO test1  (age,name) VALUEs (20,'4');
因為不會自動提交,所以執行到第三條是會全部回滾,所以最后中沒有數據
然后把autocommit打開
1
set autocommit=1;
再執行插入語句:
1
INSERT INTO test1  (age,name) VALUEs (20,'1');
2
INSERT INTO test1  (age,name) VALUEs (20,'2');
3
INSERT INTO test1  (age,name) VALUEs (20,null);
4
INSERT INTO test1  (age,name) VALUEs (20,'4');
因為會自動提交,所以執行完前兩條的時候,數據會插入數據庫,然后第三條的時候就報錯了。所以數據庫中會有兩條數據。
解析來我們來模擬今天的實際問題,我們把autocommit設置成ture
  www.2cto.com  
然后執行下面的語句
1
INSERT INTO test1  (age,name) VALUEs (20,'1'),(20,'2'),(20,null),(20,'4');
雖然是autocommit了,整個語句也會報錯,執行到第三條的時候也會報錯,但是前兩條也沒有提交成功。
總結一下,如果是多次插入或修改多行的數據時,autocommit會影響執行成功的數據是否提交。如果在一條語句中執行的時候,那么會把整個操作當成一個事務來執行,所以這時候autocommit是否打開也沒有作用了。單條語句成功就成功,失敗即回滾。

到此,相信大家對“mysql中autocommit與sql回滾有什么關系”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桦南县| 怀化市| 西藏| 上蔡县| 东光县| 辽宁省| 宝清县| 塔城市| 华池县| 兴安县| 威海市| 治多县| 阳山县| 台前县| 太原市| 锦屏县| 龙泉市| 嘉禾县| 湟源县| 锡林浩特市| 周口市| 邵东县| 精河县| 关岭| 平乡县| 含山县| 江油市| 加查县| 马公市| 沽源县| 峨眉山市| 博野县| 阆中市| 凭祥市| 普陀区| 九台市| 通州区| 桂平市| 大冶市| 壶关县| 石屏县|