在這裏我只簡單介紹一下這兩個命令,只是我在使用的過程當中用到了,因此就在這裏提一提,若是你們對這個感興趣的話,能夠去搜索一些更多的介紹,歡迎分享出來~~
-----------------------------------------------------------------------------------------------------------------------------------------------------
一個數據庫事務起始於一個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後就不會出現了~