Oracle 事務小結

什麼是事務

保證數據庫從一種狀態,改變爲另一種狀態(一致)。要麼全部修改都保存,要麼全部修改都不保存(原子)

爲什麼要用事務

例如更新兩個日誌文件,第一個文件更新完後,第二個文件更新到一半。文件系統只能恢復第二個文件的快照,而不能把第一個文件也恢復到之前,或者繼續把第二個文件更新完成。即不能保持兩個文件狀態一致,要麼全部成功,要麼全部失敗。

事務體現了ACID特性

原子性(Atomicity):一個事務中的多條Sql語句,要麼全部發生,要麼全部回滾(我的理解可能比較片面)
一致性(Consistency):在undo段中存放事務所做的修改的舊值,這樣某事務進行過程中,可以對事務外查詢(可以理解爲其它實例的查詢)提供舊值的查詢,即讀一致性。事務提交後,事務外查詢和事務內查詢結果一致。
隔離性(Isolation):一個事務在提交前,事務外查尋的結果爲舊查詢結果。即事務未提交,對其它事務無影響。
持久性(Durability):事務一旦提交,結果是永久性的

事務的開始和結束

一個dml語句會隱式的開啓一個事物。如增改刪。
commit,rollback 結束事務。(rollback to savepoint 不會結束事務)

存儲過程 如果有異常捕獲 則不會發生回滾(不會“觸發出錯就回滾”機制)
DML 語句出錯 會回滾到 該條dml語句之前的 savepoint(Oracle中默認在每個數據庫命令外加了一個savepoint) 所以都不會結束事務

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