此篇文章是對MySql中的事務處理的一個小總結
目錄
- 一、 何為事務
- 二、事務的特征:ACID
- 三、事務的組成
- 四、事務處理語言——TPL (TRANSACTION PROCESS LANGUAGE )
- 事務的自動提交模式
- 事務處理
- 事務處理隱式結束
- 設定保存點
一、 何為事務
- 事務:也稱作業單元,是由一個或多個SQL陳述句所組成的操作序列,這些SQL陳述句作為一個完整的作業單元,要么全部執行成功,要么全部執行失敗,在資料庫中,通過事務來保證資料的一致性,
- 事務的回滾:如果事務中的任何一個sql執行失敗,ROLLBACK可以進行事務的回滾,將資料恢復到事務執行之前的狀態,保證資料的一致性,
- 前提:mysql存盤引擎InnoDB
過事務的使用,能防止資料庫中出現資料不一致現象, 如兩個銀行賬戶進行轉賬,涉及到兩條更新操作,這兩條更新操作只允許全部成功或失敗,否則資料會出現不一致的現象,
二、事務的特征:ACID
事務特征可用四個字母的縮寫表示:即ACID
- 原子性 ATOMICITY
事務的sql陳述句不可分割,要么全部成功,要么全部失敗 - 一致性 CONSISTENCY
不管事務執行成功還是失敗,資料總是保持一致性的, - 隔離性 ISOLATION
事務與事務之間是相互隔離的,不相互影響 - 持久性 DURABLITY
事務一旦提交成功,對于資料的改變是持久性的,不能再進行事務的回滾了,
三、事務的組成
資料庫中,事務由一組相關的DML或SELECT陳述句,加上一 個TPL陳述句(COMMIT、ROLLBACK)或一個DDL陳述句(CREATE、 ALTER、DROP、TRUNCATE等)或一個DCL(GRANT、REVOKE) 陳述句,

四、事務處理語言——TPL (TRANSACTION PROCESS LANGUAGE )
- 事務處理語言:Transaction Process Language ,簡稱TPL, 主要用來對組成事務的DML陳述句的操作結果進行確認或取消, 確認也就是使DML操作生效,使用提交(COMMIT)命令實作; 取消也就是使DML操作失效,使用回滾(ROLLBACK)命令實作,
事務的自動提交模式
- mysql中的事務是自動提交的,即每一個sql陳述句后默認加COMMIT陳述句
- 查看mysql的事務自動提交模式:SHOW VARIABLES LIKE 'autocommit’
- 修改mysql的自動提交模式
SET AUTOCOMMIT=1 表示開啟
SET AUTOCOMMIT=0 表示關閉
事務處理
- MySQL的事務處理主要有兩種方法
-
用begin,rollback,commit來實作:
begin開始一個事務
rollback事務回滾
commit 事務提交 -
直接用set來改變MySQL的自動提交模式
MySQL默認是自動提交的,也就是你提交一個sql,就直接執行!可以通過set autocommit = 0 禁止自動提交set autocommit = 1 開啟自動提交來實作事務的處理,
但要注意當用set autocommit = 0 的時候,以后所有的sql都將作為事務處理,直到用commit確認或 rollback結束,注意當結束這個事務的同時也開啟了新的事務!按第一種方法只將當前的做為一個事務!
-
事務處理隱式結束
- 隱式提交:當下列任意一種情況發生時,會發生隱式提交 ?
- 執行一個DDL(CREATE、ALTER、DROP、TRUNCATE、RENAME) 陳述句;
- 執行一個DCL(GRANT、REVOKE)陳述句;
- 隱式回滾:當下列任意一種情況發生時,會發生隱式回滾
- 客戶端強行退出
- 客戶端連接到服務器端例外中斷
- 系統崩潰
設定保存點
如果在一個事務內,想要回滾到指 定位置,不是回滾到事務的起始點,可以通過保存點(SAVEPOINT)來實作,
- SAVEPOINT savepointname;————定義一個保存點陳述句;
- ROLLBACK TO savepointname;——-——回滾到指定保存點
注意:如上兩條陳述句不結束事務的執行,
看官,如果覺得這篇文章還不錯,點個贊加個關注再走唄 ^ - ^
MySql系列文章:
- MySql資料庫基本操作(一)
- MySql資料庫管理操作基本陳述句小結
- MySql中建表時約束條件的總結
- MySql中對資料型別的總結
- mySql事務處理TPL的小總結
- MySQL陳述句——資料查詢語言DQL詳解
- MySql資料庫中SQL陳述句的全面總結
- MySql中最基本最常用的函式小結
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/78849.html
標籤:其他
上一篇:MySQL回圈插入資料
下一篇:深入SQL(隨時更新。。。)
