3、事務的運行模式session
一般,事務以3種模式運行,他們分別是:code
1. 自動提交事務blog
每一條單獨的SQL語句都在其執行完成後進行自動提交事務,即執行 SQL 語句後就會立刻自動隱式執行 COMMIT 操做。若是出現錯誤,則進行事務回滾至以前狀態。事務
SQL SERVER和MY SQL中都默認開啓自動提交事務,ORACLE則顯式提交事務。這三種產品都提供了各自的方式來開閉自動提交事務模式,具體以下:產品
1)MYSQL中經過下面語句來開啓或關閉當前會話或全局的自動提交事務模式。it
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設置開啓仍是關閉自動事務提交模式。io
SET IMPLICIT_TRANSACTIONS ON; -- ON是打開隱式事務模式或關閉自動事務模式,OFF 是關閉隱式事務模式或打開自動提交事務模式
3)ORACLE經過以下語句開啓或者關閉自動提交事務模式class
set autocommit on; -- on是開啓自動事務模式,off是關閉自動提交事務模式
2. 顯式事務變量
經過指定事務開始語句來顯式開啓事務來做爲開始,並由以提交命令或者回滾命令來提交或者回滾事務做爲結束的一段代碼就是一個用戶定義的顯式事務。SQL SERVER、MYSQL和ORACLE都以不一樣的方式來開始顯式事務,具體以下:di
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是設置全局變量