mysql之事務管理

来源:https://www.cnblogs.com/progor/archive/2018/04/18/8877821.html
-Advertisement-
Play Games

本文內容: 什麼是事務管理 事務管理操作 回滾點 預設的事務管理 首發日期:2018-04-18 什麼是事務管理: 可以把一系列要執行的操作稱為事務,而事務管理就是管理這些操作要麼完全執行,要麼完全不執行(很經典的一個例子是:A要給B轉錢,首先A的錢減少了,但是突然的資料庫斷電了,導致無法給B加錢, ...


 


本文內容:

  • 什麼是事務管理
  • 事務管理操作
  • 回滾點
  • 預設的事務管理

 

 

 首發日期:2018-04-18


什麼是事務管理:

 

  • 可以把一系列要執行的操作稱為事務,而事務管理就是管理這些操作要麼完全執行,要麼完全不執行(很經典的一個例子是:A要給B轉錢,首先A的錢減少了,但是突然的資料庫斷電了,導致無法給B加錢,然後由於丟失數據,B不承認收到A的錢;在這裡事務就是確保加錢和減錢兩個都完全執行或完全不執行,如果加錢失敗,那麼不會發生減錢)。
  • 事務管理的意義:保證數據操作的完整性。
  • mysql中並不是所有的數據引擎都支持事務管理的,只有innodb支持事務管理。

 

事務管理的特性:

  • 原子性:事務的整個操作是一個整體,不可以分割,要麼全部成功,要麼全部失敗。
  • 一致性:事務操作的前後,數據表中的數據沒有變化。
  • 隔離性:事務操作是相互隔離不受影響的。
  • 持久性:數據一旦提交,不可改變,永久的改變數據表數據。

 

 

 

 


事務管理操作:

 

 

  • 開啟事務管理:開啟之後,下麵的sql語句並不會馬上執行並把結果寫到表中,而是會寫到事務日誌中。
    • start transaction;
  • 回退操作:回退會清掉開始事務管理之後寫到事務日誌中的內容,即恢復到開啟事務管理之前。
    • 語法:rollback;
    • 註意:回退操作只是回退"寫"的內容,對於普通的讀表select語句不能回退。
  • 事務提交:將sql語句的結果寫到數據表中。
    • 語法:commit:

 

實驗表:

create table bankaccount(id int primary key auto_increment,name varchar(15),money int);
insert into bankaccount(name,money) values("Jobs",2000);
insert into bankaccount(name,money) values("Bill",3000);

 

image

image

 

 

 

補充:

  • 當 commit 或 rollback 語句執行後,事務會自動關閉(將來的更改會隱含提交)。
  • 鎖機制:在事務操作一個表時,如果使用索引來取值,那麼會鎖定到對應行;如果沒有使用索引來取值,那麼會鎖定整個表。鎖定之後其他連接無法操作指定行或表。

 

 


回滾點:

  • 回滾點可以指定rollback回退的位置【比如現在打了100條命令,發現第81打錯了,如果回滾到打了81命令之前一點而不是回滾到開啟事務之前就可以節省下很多時間。】
  • 語法:
    • 創建回滾點:savepoint 回滾點名;
    • 回滾到回滾點:rollback to 回滾點名;

 

image

 

補充:

  • 回滾點在事務管理關閉(rollback或commit之後)之後失效,不要在事務之外使用回滾點。

 

 


預設的事務管理:

 

  • 預設情況下,mysql的事務管理是關閉(自動事務)的,語句的結果會馬上寫到數據表中。
    • 可以通過show variable like 'autocommit';來查看是否開啟自動事務,值為1為自動事務已開啟,為0則為關閉。
  • 關閉自動事務:set autocommit =0;【關閉後需要commit來執行每一條語句,相當於開始了事務管理】
    • 不過註意的是set autocommit針對的是會話變數,所以這個設置只在此次會話連接中生效。

 

 



您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 首次搭建自己的網站,在本地wamp服務上沒有任何錯誤,但是同步到阿裡雲上就報錯了,是什麼原因呢? 原來,首次搭建網站要給予某些目錄許可權,否則許可權無法運行,肯定報錯的。我是把Application下的目錄全部給與了777許可權。 chmod -R 777 /home/wwwroot/xiaokai/Ap ...
  • 常見HTTP狀態碼大全1xx(臨時響應)表示臨時響應並需要請求者繼續執行操作的狀態代碼。代碼 說明http狀態碼 100 (繼續) 請求者應當繼續提出請求。 伺服器返回此代碼表示已收到請求的第一部分,正在等待其餘部分。http狀態碼 101 (切換協議) 請求者已要求伺服器切換協議,伺服器已確認並準 ...
  • 轉載自https://www.linuxidc.com/Linux/2017-03/142299.htm Ubuntu 16.04 LTS 降級安裝GCC 4.8 Ubuntu 16.04 LTS 降級安裝GCC 4.8 由於gcc在5.x版本修改了ABI,導致新版本gcc編譯的二進位文件放在老的環 ...
  • 簡介: SSL 協議的3個特性: 保密:通過SSL鏈接傳輸的數據是加密的 鑒別:通信雙方的身份鑒別,通常是可選的,但至少有一方需要驗證(通常是服務端) 完成性:傳輸數據的完整性檢查 從性能角度考慮,加密是一項計算昂貴的處理,因此儘量不要講整個Web採用SSL鏈接,實際部署中,選擇有必要進行安全加密的 ...
  • 本文內容: 什麼是字元集?什麼是校對集? 查看字元集和校對集 設置字元集和校對集 mysql中的中文數據問題 首發日期:2018-04-19 什麼是字元集?什麼是校對集? 字元集是字母和符號的集合,每一個字元編碼都由字元集決定。 校對集是字母和符號的校對標準。校對集影響著字元的排序和搜索。 查看字元... ...
  • MySQL數據類型 日期類型 ·date date數據類型負責存儲日期信息(1000-01-01到9999-12-31)可以使用數字和字元串插入(20180809或"2018-08-09")非數字或字母使用分隔符 ·datetime datetime數據類型負責存儲日期和時間信息的組合(1000-0 ...
  • Azkaban是什麼 Azkaban是由Linkedin開源的做批量工作流任務的調度器。在一個工作流內按照特定的順序運行一組工作和流程。Azkaban定義了一種KV文件格式來建立任務之間的相互依賴關係,並且提供了一個易於使用的web用戶界面維護與跟蹤你的工作流。 Azkaban的功能特點: web用 ...
  • 一、下載PLSQLDeveloper 網址:https://www.allroundautomations.com/bodyplsqldevreg.html 還需要一個激活碼 二、PL/SQL的安裝 安裝PL/SQL步驟如下: 運行這個程式時 自動讀取(環境變數ORACLE_HOME以及NLS_LA ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...