PLSQL Language Referenc-PL/SQL靜態SQL-自治事務-控制自治事務
控制自治事務
自治程式中的第1條SQL語句開始了一個事務。當一個事務結束之後,下一個SQL語句開始了另一個事務。上一次提交或回滾之後所有SQL語句構成了當前的事務,控制自治事務需要使用下面的語句:
COMMIT; ROLLBACK [TO savepoint_name] SAVEPOINT savepoint_name SET TRANSACTION |
(1)進入和離開
當進入自治程式的可執行部分時,主事務掛起;當退出程式時,主事務恢復。
如果試圖不提交或回滾就退出自治事務,則會引發異常。如果異常沒被處理或由於其它未被處理的異常而導致事務結束,則事務會回滾。
為了正常退出,必須顯式地提交或回滾所有自治事務。如果程式或它呼叫的程式有未決的事務,則PL/SQL會引發異常,未決的事務被回滾。
(2)提交和回滾
COMMIT和ROLLBACK結束了活動的自治事務,但沒有退出自治程式。當一個事務結束了,下一個SQL語句就開始了下一個事務。一個自治程式可以包含多個自治事務,如果它執行多個commit語句。
(3)儲存點
儲存點的作用域是定義它的事務。在主事務中定義的儲存點與它的自治事務中定義的儲存是無關的。即主事務和自治事務可以使用相同的儲存點名稱。
只能回滾到在當前事務中宣告的儲存點。在自治事務中不能回滾到在主事務中宣告的儲存點。要達到這種效果必須通過退出自治程式來繼續主事務。
在主事務中,回滾到自治事務開始之前宣告的一個儲存點,不會回滾自治事務。因為自治事務是完全獨立於主事務的。
(4)避免自治事務錯誤
不能在自治程式中自治事務開始時執行PIPE ROW語句,必須在執行PIPE ROW語句之前關閉自治事務。好在執行PIPE ROW語句之前,通常會提交或回滾自治事務。
為了避免錯誤,要記住:
n 如果自治事務試圖訪問由主事務所擁有的資源,可能會引發死鎖。資料庫在自治事務中引發異常,如果異常未被處理,則事務被回滾。
n 資料庫初始化引數TRANSACTIONS指定了併發事務的最大數目。因為自治事務是與主事務併發執行,所以那個數目可能會被超出。
n 如果試圖不提交或回滾就退出活動的自治事務,資料庫會引發異常,如果異常沒有得到處理,則事務被回滾。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1123695/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PLSQL Language Referenc-PL/SQL靜態SQL-自治事務(二)SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-事務處理和控制SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-事務處理和控制-savepoint語句SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-事務處理和控制-隱式回滾SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-靜態SQL的描述-偽列SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-靜態SQL的描述-語句SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-事務處理和控制-覆蓋預設的鎖SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-游標變數SQL變數
- PLSQL Language Referenc-PL/SQL靜態SQL-靜態SQL的描述-游標-顯式游標SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-查詢結果集處理SQL
- PLSQL Language Referenc-PL/SQL動態SQL-何時需要動態SQLSQL
- PLSQL Language Referenc-PL/SQL靜態SQL-游標變數-建立游標變數SQL變數
- PLSQL Language Referenc-PL/SQL靜態SQL-游標變數-游標變數賦值SQL變數賦值
- PLSQL Language Referenc-PL/SQL動態SQL-本地動態SQL(EXECUTE IMMEDIATE語句)SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-靜態SQL的描述-游標-開啟和關閉顯式游標SQL
- oracle 自治事務Oracle
- PLSQL Language Referenc-PL/SQL靜態SQL-游標變數-游標變數作為宿主變數SQL變數
- PLSQL Language Referenc-PL/SQL靜態SQL-游標變數-開啟和關閉游標變數SQL變數
- PLSQL Language Referenc-PL/SQL靜態SQL-帶有子查詢的查詢結果集處理SQL
- PLSQL Language Referenc-PL/SQL動態SQL-練習:在動態SQL塊中呼叫子程式。SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-游標變數-游標變數作為子程式引數SQL變數
- Oracle PL/SQL 自治事務的說明OracleSQL
- PLSQL Language Referenc-PL/SQL動態SQL-動態SQL中重複的佔位符名名稱SQL
- DB2_自治事務DB2
- 瞭解Oracle自治事務Oracle
- PLSQL Language Referenc-PL/SQL靜態SQL-使用顯式游標OPEN-FETCH-CLOSE處理查詢結果集SQL
- Oracle 巢狀事務 VS 自治事務Oracle巢狀
- Oracle自治事務autonomous_transaction用法Oracle
- oracle自治事務(PRAGMA AUTONOMOUS_TRANSACTION)Oracle
- oracle自治事務引起的死鎖Oracle
- Oracle中的自治事務(Autonomous Transaction)Oracle
- PLSQL Language Referenc-PL/SQL控制語句-順序控制語句-NULLSQLNull
- PLSQL Language Referenc-PL/SQL動態SQL-練習:在USING子句中未初始化的變數表示NULLSQL變數Null
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-FOR迴圈SQL
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-CONTINUESQL
- PLSQL Language Referenc-PL/SQL控制語句-迴圈語句-EXIT WHENSQL
- PLSQL Language Referenc-PL/SQL子程式-前向宣告SQL
- PLSQL Language Referenc-PL/SQL子程式-子程式呼叫SQL