程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle_事務控制語句,oracle事務語句

Oracle_事務控制語句,oracle事務語句

編輯:Oracle教程

Oracle_事務控制語句,oracle事務語句


事務是對數據庫操作的邏輯單位,在一個事務中可以包含一條或多條DML (數據操縱語言)、DDL (數據定義語言)和DCL (數據控制語言)語句,這些語句組成一個邏輯整體

事務的執行只有兩種結果:要麼全部執行,把數據庫帶入一個新的狀態,要麼全部不執行,對數據庫不做任何修改。
對事務的操作有兩個:提交( COMMIT )和回滾( ROLLBACK )。

提交事務時,對數據庫所做的修改便永久寫入數據庫。
回滾事務時,對數據庫所做的修改全部撤銷,數據庫恢復到操作前的狀態。
事務可用於操作數據庫的任何場合,包括應用程序存儲過程觸發器等。

事務具有四個屬性,這四個屬性的英文單詞首字母合在一起就是ACID

這四個屬性是:
·原子性( Atomicity ):事務要麼全部執行,要麼全部不執行,不允許部分執行
·一致性( Consistency ):事務把數據庫從一個一致狀態帶入另一個一致狀態
·獨立性( Isolation ):一個事務的執行不受其他事務的影響。
·持續性( Durability ):一旦事務提交,就永久有效,不受關機等情況的影響。
一個事務中可以包含多條DML語句,或者包含一條DDL語句,或者包含一條DCL語句。

事務開始於第一條SQL語句,在下列之一情況下結束:
·遇到COMMIT或ROLLBACK 命令。
·遇到一條DDL或者DCL命令。
·系統發生錯誤、退出或者崩潰。
總之,事務是一系列可以把系統帶入一個新的狀態的操作,如果事務被提交,則數據庫進入一個新的狀態,否則數據庫恢復到事務以前的狀態。
在數據庫中使用事務的好處是首先可以確保數據的一致性,其次在對數據做永久修改之前可以預覽以前的數據改變,還可以將邏輯上相關的操作進行分組。
控制事務的方式有兩種一種是隱式控制數據庫管理系統根據實際情況決定提交事務還是回滾事務;
另一種方式是顯式控制在事務的最後放置一條COMMIT或ROLLBACK命令,將事務提交或回滾。
如果是隱式控制,那麼事務在遇到一條DDL命令,如CREATE ,或者遇到一條DCL 命令,如GRANT ,或者從SQL *Plus正常退出,即使沒有發出COMMIT或ROLLBACK命令,這個事務將被自動提交。
如果從SQL*Plus非正常退出或發生系統崩潰,那麼系統將自動回滾事務。
如果是顯式控制,那麼在事務的最後就要通過COMMIT命令提交事務,或者通過一條ROLLBACK命令回滾事務。

如果事務被提交,那麼對數據庫所作的修改將寫人數據庫。

如果回滾事務,一般情況下將回滾到事務的開始,即對數據庫不做任何修改。
在Oracle 中,允許部分回滾事務,即可以將事務有選擇地回滾到中間的某個點。
部分回滾是通過設置保存點( SAVEPOINT )來實現的。

事務中可以通過SAVEPOINT命令設置若干個保存點,這樣可以將事務有選擇地回滾到某一個保存點。

用戶訪問數據庫時,數據庫中的數據是放在緩沖區中的,當前用戶可以通過查詢操作,浏覽對數據操作的結果。
如果沒有提交事務,其他用戶是看不到事務的修改結果的。

當一個用戶修改表中的數據時,將對被修改的數據加鎖,其他用戶無法在此期間對該行數據進行修改,直到這個用戶提交或回攘這個事務。
如果在事務的最後執行了COMMIT命令,則對數據的修改將被寫入數據庫,以前的數據將永久丟失,無法恢復,其他用戶都可以浏覽修改後的結果,在數據上加的鎖被釋放,其他用戶可以對數據執行新的修改,在事務中設置的所有保存點將被刪除

如果在事務中設置了保存點,並且在事務的最後執行ROLLBACK命令回滾到某個保存點,那麼在此保存點之後的DML語句所做的修改將被丟棄,但是在此保存點之前的DML語句所做的修改仍然沒有寫入數據庫,還可以進行提交或回滾。


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved