《SQL必知必會》| 第20課 管理事務處理 學習筆記

  • 這一課介紹了事務是必須完整執行的SQL語句塊。
  • 我們學習瞭如何使用COMMITROLLBACK語句對何時寫數據、何時撤銷進行明確的管理;
  • 還學習瞭如何使用保留點,更好地控制回退操作。

20.1 事務處理

使用事務處理(transaction processing),通過確保成批的SQL操作要麼完全執行,要麼完全不執行,來維護數據庫的完整性。
如果沒有錯誤發生,整組語句提交給(寫到)數據庫表;
如果發生錯誤,則進行回退(撤銷),將數據庫恢復到某個已知且安全的狀態。


  • 事務transaction指一組SQl語句;
  • 回退rollback指撤銷指定SQL語句的過程;
  • 提交commit指將未存儲的SQL語句結果寫入數據庫表;
  • 保留點savepoint指事務處理中設置的臨時佔位符placeholder,可以對它發佈回退。
提示:可以回退哪些語句?
  • 事務處理用來管理INSERTUPDATEDELETE語句。
  • 不能回退SELECT語句,也不能回退CREATEDROP操作。
  • 事務處理中可以使用這些語句,但進行回退時,這些操作也不撤銷。

20.2 控制事務處理

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

有的DBMS要求明確標識事務處理塊的開始和結束。

  • BEGIN TRANSACTIONCOMMIT TRANSACTION語句之間的SQL必須完全執行或者完全不執行。
  • COMMIT用於保存更改
  • ROLLBACK用於撤銷。
20.2.1 使用ROLLBACK

SQLROLLBACK命令用來回退(撤銷)SQL語句。

20.2.2 使用COMMIT
  • 一般的SQL語句都是針對數據庫直接執行和編寫的,這就是所謂的隱式提交(implicit commit),即提交(寫或保存)操作是自動進行的。
  • 在事務處理塊中,提交不會隱式進行。不過,不同DBMS的做法有所不同。有的DBMS按隱式提交處理事務端,有的則不這樣。
    進行明確的提交,使用COMMIT語句。
20.2.3 使用保留點
  • 要支持回退部分事務,必須在事務處理塊中的合適位置放置佔位符。這樣,如果需要回退,可以回退到某個佔位符。在SQL中,這些佔位符稱爲保留點

MariaDBMySQLOracle中創建佔位符,可使用SAVEPOINT語句。
每個保留點都要取能夠標識它的唯一名字,以便在回退時,DBMS知道回退到何處。

提示:保留點越多越好

保留點越多,你就越能靈活地進行回退。

發佈了154 篇原創文章 · 獲贊 28 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章