MySQL之事務

一、事務是什麼

事務即把一系列的sql語句包裝起來,當這些sql語句處於事務內時,獲得一種狀態:要麼全部執行完畢,要麼全部不執行。

應用場景:銀行轉賬。當A向B轉100元時,如果100元成功到達B用戶,那麼事務完成;如果中途機器或者網絡出錯,代表轉賬失敗,100元應當返回到A用戶中。

二、事務的四大特性(ACID)

  • 原子性:一個事務必須被視爲一個不可分割的最小工作單元,整個事務中的所有操作要麼全部提交成功,要麼全部失敗回滾,對於一個事務來說,不可能只執行其中的一部分操作。
  • 一致性:數據庫總是從一個一致性的狀態轉換到另一個一致性的狀態。
  • 隔離性:通常來說,一個事務所做的修改在最終提交以前,對其他事務是不可見的。
  • 持久性:一旦事務提交,則其他所有的修改會永久保存到數據庫。

三、事務命令

  • 可以使用begin;或者start transaction;命令開始事務。
mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)

當啓動事務後做的一系列操作如果沒有提交,實際上沒有對數據表進行數據修改。當其他mysql客戶端查詢數據時,得到的是未修改前的數據,即錯操作未生效。如果另一個mysql對開啓了事務的數據表進行修改,需要等待其他事務提交後方可執行(類似於鎖)。

  • 使用commit;提交事務裏的操作,將永久修改數據表的數據。

MySQL默認對每條mysql開啓事務並執行完成後立刻提交。

  • 使用rollback;對事務操作進行回滾,將事務內的操作全部退回。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章