1. 程式人生 > >事務+事務特性+提交事務+回滾事務+儲存點

事務+事務特性+提交事務+回滾事務+儲存點

事務
1事務由一系列的相關的sql語句組成的最小邏輯工作單元
2oracle以事務為單位來處理資料,保證資料的一致性
3如果對事務進行提交,該事物的所有sql語句操作都會提交,成為資料庫的永久組成部分
4如果事務遇到錯誤而被取消或者回滾,事務的所有sql語句操作都會被清除,資料庫恢復到事務執行前的狀態。
5一個事務的所有sql語句要麼全部被執行,要麼全部沒有執行

事務特性acid
一組sql語句要成為事務,必須滿足以下特性
1原子性a
事務是不可分割的原子工作單元;對資料的資料修改,要麼全部執行,要不全部都不執行。
2一致性c
事務完成時,必須使所有的資料保持一致。在相關資料庫中,所有的規則都必須應用於事務的修改,以保持資料的完整性。事務結束時候,所有的內部資料結構(B樹索引或者雙向連結串列)都必須正確
3隔離性i
由併發事務所做的修改必須與其他併發事務所做的修改隔離
4永續性d
事務完成後,對系統的影響是永久性的

提交事務
提交事務表示該事務中對資料庫所做的全部操作都將永久記錄在資料庫中。

提交事務commit語句,標誌一個成功的隱性事務或者顯性事務的結束.

執行commit語句資料庫會做的動作
1在回退段內的事務表中記錄這個事務已經提交,並生成一個唯一的系統改變號scn,並將該scn值儲存到事務表中,用於唯一標識這個事務
2啟動lgwr後臺程序,將sga區中快取的重做記錄寫到聯機重做日誌檔案,並且將該事物scn值也儲存到日誌檔案中
3oracle伺服器程序釋放事務處理所使用的資源
4通知使用者事務已經提交

回滾事務

rollback 【to savepoint savepointName】
回滾事務表示該事務對資料庫的所有操作都將取消
語句
rollback 表示將事務回滾到事務的起點或者事務的某個儲存點

回滾事務,oracle會做的動作
1oracle通過回退段中的資料撤銷事務中所有的sql語句對資料庫所做的任何操作
2oracle伺服器程序事務使用的所有資源
3通知使用者事務回滾成功

儲存點
在事務的處理過程中,如果發生錯誤並且使用rollback進行回滾
,那麼整個事務對資料庫的操作都將被撤銷,在一個龐大的事務中,這是很浪費資源的,比如事務前半部分是正確的,事務的後半部分是錯誤的,那麼我想回滾到前半部分結束位置,這時就可以使用儲存點

一個事實可以建立多個儲存點,將事務分割成一系列的部分.事務回滾就可以回滾到其中的某個儲存點上

語法
savepoint 【savepointName】
savepointName:儲存點的名字

這裡寫圖片描述

1建立資料,在第二條記錄的時候設定一個儲存點s2;
2在第3條記錄的時候設定一個儲存點s3;
3在第4條記錄的時候設定一個儲存點s4;
4在沒有提交的情況下檢視有4條紀錄
5回到儲存點s2,並檢視記錄
這裡寫圖片描述
6提交事務
這裡寫圖片描述