婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MySQL 事務autocommit自動提交操作

MySQL 事務autocommit自動提交操作

熱門標簽:武漢網絡外呼系統服務商 地圖標注費用是多少 電話外呼系統改號 南昌三維地圖標注 百應電話機器人優勢 怎樣在地圖標注銷售區域 啥是企業400電話辦理 曲靖移動外呼系統公司 外呼系統打電話上限是多少

MySQL默認操作模式就是autocommit自動提交模式。這就表示除非顯式地開始一個事務,否則每個查詢都被當做一個單獨的事務自動執行。我們可以通過設置autocommit的值改變是否是自動提交autocommit模式。

通過以下命令可以查看當前autocommit模式

mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit | ON |
+---------------+-------+
1 row in set (0.04 sec)

從查詢結果中,我們發現Value的值是ON,表示autocommit開啟。我們可以通過以下SQL語句改變這個模式

mysql> set autocommit = 0;

值0和OFF都是一樣的,當然,1也就表示ON。通過以上設置autocommit=0,則用戶將一直處于某個事務中,直到執行一條commit提交或rollback語句才會結束當前事務重新開始一個新的事務。

舉個例子,張三給李四轉賬500元。那么在數據庫中應該是以下操作:

1,先查詢張三的賬戶余額是否足夠

2,張三的賬戶上減去500元

3,李四的賬戶上加上500元

以上三個步驟就可以放在一個事務中執行提交,要么全部執行要么全部不執行,如果一切都OK就commit提交永久性更改數據;如果出錯則rollback回滾到更改前的狀態。利用事務處理就不會出現張三的錢少了李四的賬戶卻沒有增加500元或者張三的錢沒有減去李四的賬戶卻加了500元。

MySQL默認的存儲引擎是MyISAM,MyISAM存儲引擎不支持事務處理,所以改變autocommit沒有什么作用。但不會報錯,所以要使用事務處理的童鞋一定要確定你所操作的表示支持事務處理的,如InnoDB。如果不知道表的存儲引擎可以通過查看建表語句查看建表的時候有沒有指定事務類型的存儲引擎,如果沒有指定存儲引擎默認則是MyISAM不支持事務的存儲引擎。

當然,事務處理是為了保障表數據原子性、一致性、隔離性、持久性。

這些都是要消耗系統資源的,要謹慎選擇。

補充:MySQL的事務處理(Transation)和自動執行(AutoCommit)與提交類型(Completion)

1、事務(transaction)

事務在計算機術語中是指訪問并可能更新數據庫中各種數據項的一個程序執行單元(unit)。事務主要用于處理操作量大,復雜度高的數據。如果你要刪除一條主表信息,而主表有多個從表的時候,你需要有步驟地刪除明細后再刪除主表信息,這個過程極其容易出錯,那么這個時候就是用事務才處理是最合適的了。

2、事務(Transcation)的用法

事務開始(start transaction or begin)

提交(commit)

回滾(rollback)

3、MYSQL支持的引擎(InnoDB)

show engines;

4、自動執行(AutoCommit)與提交類型(Completion)

使用事務有兩種方式,分別為隱式事務和顯式事務。隱式事務實際上就是自動提交,Oracle 默認不自動提交,需要手寫 COMMIT。在MySQL中,自動提交(autocommit)在支持事務(transaction)的引擎中,若autocommit=true,則不需要commit的情況下直接提交語句形成永久性修改,Mysql默認打開autocommit,也可以通過配置設置。

set autocommit=0;(AutoCommit Off)
set autocommit=1;(AutoCommit On)
set completion_type=0;(No Chain)
set completion_type=1;(Chain)
set completion_type=2;(Release)

也可以通過語句查詢當前配置

show variables like '%autocommit%';
show variables like '%completion%';

5、驗證例子

mysql> BEGIN;
 -> INSERT INTO test SELECT '關羽';
 -> COMMIT;
 -> BEGIN;
 -> INSERT INTO test SELECT '張飛';
 -> INSERT INTO test SELECT '張飛';
 -> ROLLBACK;
 -> SELECT * FROM test;
 -> //
Query OK, 0 rows affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
Query OK, 0 rows affected (0.02 sec)
Query OK, 0 rows affected (0.03 sec)
Query OK, 1 row affected (0.03 sec)
Records: 1 Duplicates: 0 Warnings: 0
ERROR 1062 (23000): Duplicate entry '張飛' for key 'PRIMARY'

mysql> select * from test;//

當前窗口結果:

新建窗口結果:

結論:由于test表中name的唯一性約束,看代碼的話,兩個"張飛"執行后(無論有無觸發主鍵約束),實際由于第二個"張飛"觸發了唯一性約束異常,所以我認為事務會跳出,所以在當前連接中,test表中可以看到一個張飛,實際上第二個事務,并沒有提交成功。

接下來,我們試試正常提交的數據。

mysql> BEGIN;
 -> INSERT INTO test SELECT '關羽';
 -> COMMIT;
 -> BEGIN;
 -> INSERT INTO test SELECT '張飛';
 -> INSERT INTO test SELECT '劉備';
 -> ROLLBACK;
 -> //
Query OK, 0 rows affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
Query OK, 0 rows affected (0.02 sec)
Query OK, 0 rows affected (0.02 sec)
Query OK, 1 row affected (0.03 sec)
Records: 1 Duplicates: 0 Warnings: 0
Query OK, 1 row affected (0.04 sec)
Records: 1 Duplicates: 0 Warnings: 0
Query OK, 0 rows affected (0.04 sec)


mysql> select * from test;//

當前窗口結果:

新建窗口結果:

結論:對比這次的測試結果,所以我認為第一個測試,并沒有執行rollback,而是跳出事務處理異常機制了。

因為mysql默認打開了autocommit,那么我想驗證下在無顯示事務的情況下(即無begin開頭),兩個"張飛"是如何自處的?

mysql> BEGIN;
 -> INSERT INTO test SELECT '關羽';
 -> COMMIT;
 -> INSERT INTO test SELECT '張飛';
 -> INSERT INTO test SELECT '張飛';
 -> ROLLBACK;
 -> //
Query OK, 0 rows affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
Query OK, 0 rows affected (0.02 sec)
Query OK, 1 row affected (0.05 sec)
Records: 1 Duplicates: 0 Warnings: 0

ERROR 1062 (23000): Duplicate entry '張飛' for key 'PRIMARY'
mysql> select *from test;//

當前窗口結果:

新建窗口結果:

結論:其實看執行結果就知道了,第1個"張飛"作為單獨的事務已經執行成功了,第二個"張飛"由于觸發了主鍵約束所以執行失敗了。除了顯示事務外,有沒有辦法在沒結束事務前(無Commit)前,可以讓兩個"張飛"合并成一個事務呢?

可以設置set completion_type=1;(chain),也就是說無論幾個"張飛"在還沒提交之前,都是一個事務。

代碼與上面的一樣。

mysql> SET @@completion_type = 1;
 -> BEGIN;
 -> INSERT INTO test SELECT '關羽';
 -> COMMIT;
 -> INSERT INTO test SELECT '張飛';
 -> INSERT INTO test SELECT '張飛';
 -> ROLLBACK;
 -> //
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 1 row affected (0.02 sec)
Records: 1 Duplicates: 0 Warnings: 0
Query OK, 0 rows affected (0.02 sec)
Query OK, 1 row affected (0.02 sec)
Records: 1 Duplicates: 0 Warnings: 0
ERROR 1062 (23000): Duplicate entry '張飛' for key 'PRIMARY'

當前窗口結果:

新建窗口結果:

結論:因為我設置了set completion_type=1(chain),相當與在第一個"張飛"前加了begin,所以第二個"張飛"由于觸發了主鍵約束所以導致事務失敗,插入數據失敗。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • 詳解MySQL中事務隔離級別的實現原理
  • MySQL執行事務的語法與流程詳解
  • mysql、oracle默認事務隔離級別的說明
  • MySQL 查看事務和鎖情況的常用語句分享
  • MySQL 主從同步,事務回滾的實現原理
  • MySQL數據庫事務與鎖深入分析
  • Mysql事務中Update是否會鎖表?
  • 深入理解PHP+Mysql分布式事務與解決方案
  • MySQL如何實現事務的ACID
  • MySQL為什么要避免大事務以及大事務解決的方法
  • 詳解MySQL中事務的持久性實現原理

標簽:荊州 甘南 黑河 滄州 隨州 錦州 吉林 資陽

巨人網絡通訊聲明:本文標題《MySQL 事務autocommit自動提交操作》,本文關鍵詞  MySQL,事務,autocommit,自動,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL 事務autocommit自動提交操作》相關的同類信息!
  • 本頁收集關于MySQL 事務autocommit自動提交操作的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    一区二区三区高清不卡| 欧美另类z0zxhd电影| 麻豆成人久久精品二区三区小说| 日韩精品中文字幕在线一区| 精品视频全国免费看| 国产成人免费视频网站高清观看视频| 中文字幕亚洲视频| 中文子幕无线码一区tr| 欧美一级生活片| 制服丝袜亚洲精品中文字幕| 欧美日韩一区中文字幕| 五月天精品一区二区三区| 一区二区三区在线视频观看| 国产很黄免费观看久久| 久久先锋影音av| 一区二区三区影院| 中文字幕亚洲一区二区av在线 | 欧美色图片你懂的| 色婷婷av一区二区| 97精品久久久午夜一区二区三区| 日韩三级免费观看| 激情小说欧美图片| 91精品国产综合久久久久久漫画 | 久久精品这里都是精品| 国产精品一区二区免费不卡| 久久日韩精品一区二区五区| 丁香桃色午夜亚洲一区二区三区| ●精品国产综合乱码久久久久| 色狠狠色狠狠综合| 日日夜夜精品视频天天综合网| 欧美日本国产视频| 国产69精品久久久久毛片| 亚洲国产日韩一区二区| 亚洲综合色婷婷| 欧美色图12p| 亚洲午夜羞羞片| 国产调教视频一区| 国产精品456| 久久国产福利国产秒拍| 国产一区在线看| 国产精品人妖ts系列视频| 亚洲色欲色欲www| 欧美日韩一区中文字幕| 亚洲乱码中文字幕| 欧美群妇大交群的观看方式| 蓝色福利精品导航| 亚洲v日本v欧美v久久精品| 国产精品久久久一本精品| 美女脱光内衣内裤视频久久网站 | 欧美乱熟臀69xxxxxx| 国产精品三级视频| 欧美性高清videossexo| 国内精品在线播放| 午夜伦理一区二区| 中文在线资源观看网站视频免费不卡 | 国产精品的网站| 日韩欧美中文一区| 99久久精品免费| 国产成人综合亚洲网站| 91超碰这里只有精品国产| 亚洲一区二区成人在线观看| 国产一区二区久久| 欧美日韩三级在线| 亚洲综合久久久久| 精品视频123区在线观看| 亚洲宅男天堂在线观看无病毒| 91久久精品国产91性色tv | 成人av资源下载| 亚洲欧美日韩在线| 福利电影一区二区| 欧美久久高跟鞋激| 久久精品国产**网站演员| 久久久精品一品道一区| 国产成人av一区二区三区在线 | 精品一二三四区| 久久久亚洲欧洲日产国码αv| 7777精品伊人久久久大香线蕉经典版下载| 亚洲成人免费在线| 日本视频中文字幕一区二区三区| 国内精品写真在线观看| 欧美亚洲愉拍一区二区| 日韩久久久精品| 丝瓜av网站精品一区二区| 国产91精品一区二区麻豆亚洲| 国产成人精品免费| 成人午夜私人影院| 91在线精品一区二区三区| 欧美一区二区久久| 国产欧美一区二区精品性色| 一级特黄大欧美久久久| 99精品黄色片免费大全| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 日韩中文字幕区一区有砖一区| 欧美日韩黄色一区二区| 美女视频一区二区三区| 久久久91精品国产一区二区精品| 男人操女人的视频在线观看欧美| 91精品国产欧美一区二区成人| 亚洲人妖av一区二区| 欧美亚洲一区二区三区四区| www国产精品av| 久久66热偷产精品| 最新不卡av在线| 日韩精品一区二区三区四区| 成人av网址在线| 99久久综合国产精品| 亚洲综合偷拍欧美一区色| 久久欧美一区二区| 欧美日韩一级大片网址| av一区二区三区在线| 裸体一区二区三区| 亚洲男人都懂的| 久久婷婷色综合| 日韩欧美在线网站| 欧美成人在线直播| 欧美三级中文字幕在线观看| 欧美人牲a欧美精品| 日韩一区二区三区精品视频| 欧美精品一区二区三区蜜臀 | 91国产丝袜在线播放| 国产成人自拍网| 国产美女久久久久| 国产美女在线观看一区| 国产盗摄一区二区三区| 国产精品系列在线观看| 大尺度一区二区| 91激情五月电影| 91久久精品日日躁夜夜躁欧美| 91蜜桃婷婷狠狠久久综合9色| 亚洲图片一区二区| 美女网站视频久久| 久久亚洲欧美国产精品乐播| 欧美午夜精品久久久久久孕妇| 日本乱人伦一区| 欧美三级一区二区| 精品少妇一区二区三区在线播放| 欧美电视剧在线看免费| 精品区一区二区| 国产精品日产欧美久久久久| 亚洲最色的网站| 国产精品情趣视频| 日韩欧美成人午夜| 久久嫩草精品久久久久| 日韩一区日韩二区| 日韩精品一区第一页| 成人少妇影院yyyy| 欧美一区二区视频观看视频| 国产无一区二区| 日本亚洲最大的色成网站www| 国产.欧美.日韩| 99久久国产免费看| 精品噜噜噜噜久久久久久久久试看| 久久综合999| 亚洲综合色噜噜狠狠| 亚洲午夜在线观看视频在线| 高清av一区二区| www.视频一区| 亚洲精品一区二区三区香蕉| 一级女性全黄久久生活片免费| 天涯成人国产亚洲精品一区av| 国产成人av电影在线| 国产精品拍天天在线| 精品一区二区影视| 欧美一区二视频| 日本欧美一区二区三区| 欧美伊人精品成人久久综合97| www一区二区| 成人精品视频一区二区三区| 国产精品情趣视频| 91老师国产黑色丝袜在线| 一区二区三区在线观看欧美| 99久久免费精品| 亚洲高清免费在线| 欧美成人伊人久久综合网| 国产成人综合在线观看| 国产精品久久久久久久久快鸭| 丁香另类激情小说| 亚洲精品国产高清久久伦理二区| av中文字幕不卡| 国产亚洲欧美一级| 91丨porny丨最新| 麻豆freexxxx性91精品| 久久综合狠狠综合久久激情| 亚洲国产高清不卡| 91精彩视频在线观看| 蜜臀国产一区二区三区在线播放| 亚洲国产精品黑人久久久| 91麻豆自制传媒国产之光| 亚洲一区二区不卡免费| 日韩精品一区二区三区四区视频| 色狠狠色噜噜噜综合网| 午夜激情久久久| 五月天久久比比资源色| 亚洲精品日韩一| 国产精品美女久久久久久久 | 亚洲欧美日本在线| 国产亚洲综合性久久久影院| 制服丝袜中文字幕亚洲| 欧美一级欧美一级在线播放| 91精品国产综合久久福利软件 |