三大常用数据库事务详解之三:事务运行模式

三、事务的运行模式

通常,事务以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是设置全局变量

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要介绍“hive和mysql的区别是什么”,在日常操作中,相信很多人在hive和mysql的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操
这篇“MySQL数据库如何改名”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文...
这篇文章主要介绍“mysql版本查询命令是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mysql版本查询命令是
本篇内容介绍了“mysql怎么修改字段的内容”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况...
这篇文章主要讲解了“mysql怎么删除unique约束”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql怎么删...
今天小编给大家分享一下mysql怎么查询不为空的字段的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下...
这篇文章主要讲解了“mysql怎么查询字段数量”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql怎么查询...
本篇内容主要讲解“如何使用命令行删除mysql数据库”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用命...
这篇文章主要介绍“mysql级联删除功能怎么使用”,在日常操作中,相信很多人在mysql级联删除功能怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的...
本篇内容主要讲解“mysql中怎么创建和查询外键”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql中怎么创建...
这篇文章主要讲解了“mysql密码忘记了怎么修复”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql密码
本文小编为大家详细介绍“mysql的转义符怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“mysql的转义符怎么使用”文章能帮助大家解决疑惑,下面跟着小...
本文小编为大家详细介绍“mysql慢查询如何开启”,内容详细,步骤清晰,细节处理妥当,希望这篇“mysql慢查询如何开启”文章能帮助大家解决疑惑,下面跟着小编的...
这篇文章主要介绍“mysql的外键如何设置”,在日常操作中,相信很多人在mysql的外键如何设置问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,
本篇内容介绍了“mysql常见的中文乱码怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这
本文小编为大家详细介绍“怎么在不同操作系统下更改MySQL的端口号”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么在不同操作系统下更改MySQL的端口号”文...
今天小编给大家分享一下如何提高mysql查询效率的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希
这篇文章主要介绍了with as mysql语法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇with as mysql语法是什么文章都会有...
本篇内容介绍了“mysql的DISTINCT怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况...
这篇文章主要讲解了“linux中怎么修改mysql密码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux中怎...