【MySql】7.事務處理的基本操做

事務處理(transaction processing)能夠用來維護數據庫的完整性,它保證成批的MySQL操做要麼徹底執行,要麼徹底不執行。數據庫

可是並不是全部的數據庫引擎都支持事務處理。MyISAMInnoDB是兩種最常使用的引擎。前者不支持明確的事務處理管理,然後者支持。服務器

1、幾個事務處理相關的術語

事務(transaction)指一組SQL語句;ide

回退(rollback)指撤銷指定SQL語句的過程;spa

提交(commit)指將未存儲的SQL語句結果寫入數據庫表;事務

保留點(savepoint)指事務處理中設置的臨時佔位符(placeholder),能夠對它發佈回退(與回退整個事務處理不一樣)。ci


2、控制事務處理

管理事務處理的關鍵在於將SQL語句組分解爲邏輯塊,並明確規定數據什麼時候應該回退,什麼時候不該該回退。it

1、開始事務

START TRANSACTION;io

使用如上語句標識事務的開始;table


2、使用ROLLBACK

ROLLBACK命令用來回退(撤銷)MySQL語句:class

下面的示例操做,首先開始一個事務,而後刪除了表account中的全部內容,並查看錶中的內容,顯示錶已被清空。但執行ROLLBACK回退事務後,從新查詢表中的數據。表中的數據依然還在:

start transaction;

delete from account;

select * from account;

rollback;

select * from account;

show create table account;

注意:上例中表account使用的是InnoDB引擎,若一個使用MyISAM引擎的表執行如上操做,則即便ROLLBACK後,能夠發現,數據仍然被實實在在的清空。


3、使用COMMIT

通常的MySQL語句都是隱含提交(implicit commit)的,即提交(寫或保存)操做是自動進行的。

可是,在事務處理塊中,提交不會隱含進行。爲進行明確的提交,須要使用COMMIT語句。示例:

start transaction;

delete from account;

commit;

COMMITROLLBACK語句執行後,啓動的事務會自動關閉。


4、使用保留點

爲了支持回退部分事務處理,必須在事務處理塊中合適的位置放置保留點。

建立保留點:SAVEPOINTsap_name;

回退至保留點:ROLLBACK TOsap_name;

釋放保留點:RELEASEsp_name;

保留點也能夠在事務處理完成(執行一條ROLLBACKCOMMIT)後自動釋放。


5、更改默認的提交行爲

SET autocommit=0;

autocommit標誌是針對每一個鏈接而不是服務器的。

相關文章
相關標籤/搜索