MySQL使用以下的語句來標識事務的開始:數據庫
start transaction
或者測試
begin
事務成功後,使用以下的語句來標識事務的成功:code
commit
當事務邏輯出現異常時,可使用以下的語句來標識事務的取消:事務
rollback
事務處理用來管理 INSERT 、UPDATE 和 DELETE 語句,沒法管理不會改變數據的 SELECT 查詢語句,也沒法管理 CREATE 或 DROP 操做。事務操做隔離了其中被操做數據狀態改變的可見性,同時使事務內的屢次數據更新操做具備了原子性,即要麼同時成功,要麼所有失敗。ci
建立測試表 test:it
create table test(a int, b char(5));
執行事務操做:io
start transaction; insert into test values('1', 'right'); insert into test values('2', 'wrong'); update test set b = 'right' where a = 2; select * from test; commit;
上述操做中,一個事務內包含兩次獨立的插入操做和一次更新操做,以及一次查詢所有數據的操做。因爲事務的隔離性,當事務結束前,其餘鏈接的查詢語句將沒法查詢到插入的這兩條數據,也沒法對其進行更新操做,只有處於同一事務的查詢語句和更新語句能夠針對該新插入的數據進行查詢或更新。當執行了 commit 語句後,該事務內的操做將所有生效,使其餘鏈接也能夠對此事務更新後的數據進行操做。table
當上述事務中的語句若是出現執行失敗,或在事務提交前執行了 rollback 語句,那麼無論語句已經執行成功了多少條,其數據庫狀態都將恢復到所有語句執行以前的狀態。test