MySQL事務的介紹+事務的特性+事務的開啓

事務介紹:mysql

簡單的說,事務就是指邏輯上的一組SQL語句操做,組成這組操做的各個SQL語句,要麼全成功要麼全失敗。
  例如:A給B轉帳5元,流程是從A的帳戶扣除5元,把5元打入B的帳戶,B的帳戶上收到5元。
  SQL語句爲:update account set money=money-5 where name='A'; update account set money=money+5 where name='B';
  上述的SQL語句操做,在事務中要麼都執行,要麼都不執行; 這是事務的原子性(Acomicity)

事務的四大特性(ACID)
1.原子性(Atomicity)
  事務是一個不可分割的單位,事務中的全部SQL等操做要麼都發生,要麼都不發生。
2.一致性(Consistency)
  事務發生前和發生後,數據的完整性必須保持一致。
3.隔離性(Isolation)
  當併發訪問數據庫時,一個正在執行的事務在執行完畢前,對於其餘的回話是不可見的,多個併發事務之間的數據是相互隔離的。有個備份參數--single-transaction(innodb使用)
4.持久性(Durability)
  一個事務一旦被提交,它對數據庫中的數據改變時永久性的。若是出了錯誤,事務也不容許撤銷,只能經過"補償事務"。sql

開啓事務:
數據庫默認事務是自動提交的,發一條SQL執行一條。若是想多條SQL放在一個事務中執行,則須要使用事務進行處理。當開啓一個事務,而且沒有提交,mysql會自動回滾事務,或者使用rollback命令手動回滾事務。
start transaction 開啓事務
rollback 回滾事務
commit 提交事務
mysql>set global autocommit=1; #開啓自動提交
mysql>set global autocommit=0; #禁止自動提交  若是不執行commit,退出後,以前執行的操做就丟失了。數據庫

相關文章
相關標籤/搜索