三大常用數據庫事務詳解之三:事務運行模式


三、事務的運行模式

通常,事務以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是設置全局變量


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM