1. 程式人生 > >mysql 回滾

mysql 回滾

acid 

事務處理的特性

原子性(Atomicity)
一個事務(transaction)中的所有操作,要麼全部完成,要麼全部不完成,不會結束在中間某個環節。事務在執行過程中發生錯誤,會被回滾(Rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。

一致性(Consistency)
一致性是指事務必須使資料庫從一個一致的狀態變到另外一個一致的狀態,也就是執行事務之前和之後的狀態都必須處於一致的狀態。

隔離性(Isolation)
隔離性是指當多個使用者併發訪問資料庫時,不能被其他事務的操作所幹擾,多個併發事務之間要相互隔離。資料庫允許多個併發事務同時對其資料進行讀寫和修改的能力,隔離性可以防止多個事務併發執行時由於交叉執行而導致資料的不一致。事務隔離分為不同級別,包括讀未提交(Read uncommitted)、讀提交(read committed)、可重複讀(repeatable read)和序列化(Serializable)

永續性(Durability)
永續性是指一個事務一旦被提交了,那麼對於資料庫中的資料改變就是永久性的,即便是在資料庫系統遭遇到故障的情況下也不會丟失提交事務的操作。
事務處理
自動提交
在 MySQL 命令列的預設設定下,事務都是自動提交的,也就說使用者不用意識此事,執行 SQL 語句後就會馬上執行 【COMMIT 】操作。特別是當儲存引擎為MyISAM的情況下,因為它本身就是不支援事務處理的。只要執行了命令,所有的命令就會被提交。因此要顯式地開啟一個事務務須使用命令 【BEGIN】 或 【START TRANSACTION】後,才不會自動提交,只有明確執行了【COMMIT】命令後才會被提交,再次之前也就可以執行【ROLLBACK】這樣的命令了。
--------------------- 
檢視自動提交模式

[email protected]@AUTOCOMMIT;

我們可以看到我們目前自動提交的模式是開啟的(0:為未開啟;1:開啟)

修改自動提交模式
修改自動提交模式使用的是【SET】語句:

將自動提交模式設定為OFF的語法是:SET AUTOCOMMIT =0;
將自動提交模式設定為ON的語法是:SET AUTOCOMMIT =1;
--------------------- 

簡單事務回滾

使用事務回滾主要是使用三個命令,他們的語法如下:

命令 解釋
BEGIN(或:START TRANSACTION); 開啟事務
COMMIT; 提交整個事務
ROLLBACK; 回滾到事務開始的狀態

ALTER TABLE user ENGINE = InnoDB; 

SHOW CREATE TABLE user;

BEGIN; 

SELECT * FROM user;

DELETE FROM user;

SELECT * FROM user;

 ROLLBACK;

SELECT * FROM user;

使用rollback回滾完成,使用commit提交不能回滾。

部分回滾(savepoint)

  • DROP DATABASE;
  • DROP TABLE;
  • DROP;
  • ALTER TABLE;
  • 四條命令不能執行回滾。

作者:Newtol 
來源:CSDN 

原文:https://blog.csdn.net/m0_37888031/article/details/80704344 
版權宣告:本文為博主原創文章,轉載請附上博文連結!