MYSQL學習筆記:關於MySQL管理事務處理(6)


MySQL學習:


MySQL事務

事務處理用來維護數據庫的完整性,用來管理成批執行的MySQL操作。


介紹幾個術語

  • 事務(transaction)

指一組SQL語句。

  • 回退(rollback)

指撤銷指定SQL語句的過程。

  • 提交(commit)

指將末存儲的SQL語句結果寫入數據庫表。

  • 保留點(savepoint)

指事務處理中設置的臨時佔位符,你可以對它發佈回退(與回退整個事務處理不同)。



使用MySQL事務

  • 標誌事務的開始

使用START TRANSACTION語句來標誌開始。

START TRANSACTION;
  • 回退(撤銷)MySQL語句

使用 ROLLBACK 命令來回退MySQL語句。

注意:

  • ROLLBACK只能在一個事務處理內使用(在執行一條START TRANSACTION命令之後)。
  • 事務處理用來管理INSERTUPDATEDELETE語句,不能回退SELECT(沒意義)、CREATEDROP(用了也沒效果)。
-- 說明表中有數據
SELECT * FROM students; 
	
-- 標示事務的開始
START TRANSACTION;

-- 刪除表中的數據
DELETE FROM students;

-- 表示表中數據爲空
SELECT * FROM students;
	
-- 撤銷上一條語句
ROLLBACK;

-- 表名撤銷成功
SELECT * FROM students;
  • 提交事務

一般的MySQL語句都是隱含提交的,即提交(寫或保存)操作時自動進行的。
COMMIT 語句僅在不出錯時寫出更改。
當 COMMIT 或 ROLLBACK 語句執行後,事務會自動關閉,將來的更改會隱含提交。

語句1;
語句2;
COMMIT;
  • 使用保留點

爲了支持回退部分事務處理,必須能在事務處理塊中合適的位置放保留點。
使用 SAVEPOINT name_p 命令來創建,用 ROLLBACK TO name_p 來回退。

SAVEPOINT name_p1;
...
SAVEPOINT name_p2;

ROLLBACK To name_p1;

注意:

  1. 保留點越多越好
  2. 保留點在事務處理完成(執行一條 ROLLBACKCOMMIT)後自動釋放。
  • 更改默認的提交行爲

爲指示MySQL不自動提交更改,需要使用 SET autocommit=0 語句

SET autocommit = 0;

其中autocommit標誌決定是否自動提交更改,設置爲0(假)時指示MySQL不自動提交更改,知道設置爲真爲止



若有不當之處,歡迎指正!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章