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是设置全局变量