三、事務的運行模式
通常,事務以3種模式運行,他們分別是:
1. 自動提交事務
每一條單獨的SQL陳述句都在其執行完成后進行自動提交事務,即執行 SQL 陳述句后就會馬上自動隱式執行 COMMIT 操作,如果出現錯誤,則進行事務回滾至之前狀態,
SQL SERVER和MY SQL中都默認開啟自動提交事務,ORACLE則顯式提交事務,這三種產品都提供了各自的方式來開閉自動提交事務模式,具體如下:
1)MYSQL中通過下面陳述句來開啟或關閉當前會話或全域的自動提交事務模式,
set session autocommit=0; -- 0是關閉,1是開啟;session是設定當前會話變數,global是設定全域變數
2)SQL SERVER中使用下面陳述句來關倍訓打開自動提交事務模式 ,或者通過 Sql Server Managerment Studio,在 Tools -> Options Query Execution -> SQL Server -> ANSI 選項中勾選SET IMPLICIT_TRANSACTIONS設定開啟還是關閉自動事務提交模式,
SET IMPLICIT_TRANSACTIONS ON; -- ON是打開隱式事務模式或關閉自動事務模式,OFF 是關閉隱式事務模式或打開自動提交事務模式
3)ORACLE通過如下陳述句開啟或者關閉自動提交事務模式
set autocommit on; -- on是開啟自動事務模式,off是關閉自動提交事務模式
2. 顯式事務
通過指定事務開始陳述句來顯式開啟事務來作為開始,并由以提交命令或者回滾命令來提交或者回滾事務作為結束的一段代碼就是一個用戶定義的顯式事務,SQL SERVER、MYSQL和ORACLE都以不同的方式來開始顯式事務,具體如下:
1)SQL SERVER 以BEGIN [ TRAN | TRANSACTION ] 作為開始,以COMMIT [ WORK | TRAN | TRANSACTION ] 或者 ROLLBACK [ WORK | TRAN | TRANSACTION ] 作為結束,
2)MYSQL 以START TRANSACTION | BEGIN [WORK]作為開始,以COMMIT [ WORK ] 或者 ROLLBACK [ WORK ] 作為結束,
3)ORACLE事務起始于第一條SQL陳述句的執行,不需要特別指定事務的開始和結束,一個事務結束就意味著下一事務開始,以COMMIT或不帶有SAVEPOINT子句的ROLLBACK命令作為結束,
3. 隱式事務
在隱式事務中,無需使用BEGIN TRANASACTION 來開啟事務,每個SQL陳述句第一次執行就會開啟一個事務,直到用COMMIT [TRANSACTION]來提交或者ROLLBACK [TRANSACTION]來回滾結束事務,
1)SQL SERVER中使用下面陳述句來開啟和關閉隱式事務模式,或者通過 Sql Server Managerment Studio,在 Tools -> Options Query Execution -> SQL Server -> ANSI 選項中勾選SET IMPLICIT_TRANSACTIONS設定開啟還是關閉隱式事務模式,
SET IMPLICIT_TRANSACTIONS ON --ON是開啟,OFF是關閉
2)ORACLE默認就是隱式開啟事務,顯式提交事務,可以通過下面陳述句開啟自動提交事務,以達到隱式提交事務,
SET autocommit ON; -- on是開啟自動事務模式,off是關閉自動提交事務模式
3)MYSQL通過關閉自動提交事務,來達到隱式開啟事務,顯式提交事務的目的,
SET session autocommit = 0; -- 0是關閉,1是開啟;session是設定當前會話變數,global是設定全域變數
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/14979.html
標籤:SQL Server
