在這裡我只簡單介紹一下這兩個命令,只是我在使用的過程中用到了,所以就在這裡提一提,如果大家對這個感興趣的話,可以去搜尋一些更多的介紹,歡迎分享出來~~
一個資料庫事務起始於一個SQL語句,中止於以下4種事件之一:
COMMIT或ROLLBACK語句
DDL/DCL隱式提交
使用者退出時自動認可
系統強行關閉時取消事務
事務結束後,下一條SQL語句將開始一個新的事務。
語句 功能
COMMIT 結束當前事務,並將所有資料變更提交資料庫生效
SAVEPOINT name 在當前事務內部建立一個儲存點
ROLLBACK [TO SAVEPOINT name] ROLLBACK指令結束當前事務,並取消所有資料變更。ROLLBACK TO SAVEPOINT name放棄該儲存點,並取消所有在儲存點之後的資料變更
隱含交易提交:
一個事務在下列情況下會被自動認可
DDL語句
DCL語句
使用者正常退出資料庫,而缺少顯式的COMMIT或者ROLLBACK。
一個事務在下列情況下會被自動回退
使用者異常退出資料庫
系統強行關閉
資料在COMMIT/ROLLBACK前的狀態:
事務中所有資料變更都會被臨時存放在資料庫的緩衝池中,直到事務被提交或者回退。因而事務中早先的狀態是可以被恢複的。
使用者可以通過SELECT語句查詢自己發起事務的資料變更,即使事務未被提交。但不能看到他人發起事務中未被提交的資料。
使用者發起事務中的變更資料將被資料庫系統鎖定。除該使用者外,其他使用者不能對鎖定的資料進行變更操作,直到鎖定的資料被提交或回退。
資料在COMMIT後的狀態:
資料變更在資料庫中正式生效
資料不可被還原
所有使用者可以看到變更資料
資料鎖將被釋放,一度被鎖定的資料重新可以被所有使用者修改
所有的儲存點(savepoint)都被清除
資料在ROLLBACK後的狀態:
所有資料變更都取消,資料狀態恢複到事務開始前
資料鎖將被釋放,一度被鎖定的資料重新可以被所有使用者修改
回退到一個儲存點:
使用SAVEPOINT語句建立一個儲存點。如果儲存點名稱已經存在,則新的儲存點將覆蓋舊的儲存點。
使用ROLLBACK TO SAVEPOINT語句回退到已有儲存點狀態
總結一下:
1.沒有提交(commit)的資料刪除後無法rollback
2.提交(commit)了的資料刪除後可以使用rollback恢複
3.刪除資料後提交(commit)則無法使用rollback恢複
以上只是在用到的過程中,就隨便搜了一點分享給大家,以後有更多資料了,再接著共用, 對了,還有一點,就是使用delete命令後沒有commit,在程式裡實現插入或者其他動作的時候會一直處在正在執行的狀態,但是commit後就不會出現了~
更多Oracle相關資訊見Oracle 專題頁面 http://www.bkjia.com/topicnews.aspx?tid=12