事务的分类
来源:互联网 发布:fps网页.知乎 编辑:程序博客网 时间:2024/06/07 06:37
①显示事务 :也称之为用户定义或用户指定的事务,即可以显式地定义启动和结束的事务。分布式事务属于显示事务
②自动提交事务:默认事务管理模式。如果一个语句成功地完成,则提交该语句;如果遇到错误,则回滚该语句。
③隐性事务:当连接以此模式进行操作时,sql将在提交或回滚当前事务后自动启动新事务。无须描述事务的开始,只需提交或回滚每个事务。它生成连续的事务链。
以前听个前辈说过,在默认情况下,一条sql语句就是一个事务,其实说的就是事务的自动提交模式,因为它是数据库引擎管理事务时默认的模式。下面笼统的举几个例子,分别对应下这三种模式:
1、显示事务:这个就是我们在存储过程代码中写了BEGIN TRANSCATION,或者C#、Java中调用API开启一个事务,然后在没错的情况下COMMIT,有错误的时候rollback;
2、自动提交事务:这种模式是数据库引擎处理事务的默认模式,我们和数据库建立了连接,无论是在数据库客户端或是代码中让数据库执行1条或多条SQL语句时,每一条语句都会视为一个事务,执行成功自动提交,错误后自动回滚。值得注意的是执行多条SQL语句的批处理时,只要出错的语句是运行时的错误,出错的语句回滚不会影响前边已提交的语句。但是如果出错的语句是编译错误,虽然看着像前几条SQL语句回滚了,其实是这个批处理压根就没执行,因为是编译(语法)错误;
3、隐性事务:使用 Transact-SQL SET IMPLICIT_TRANSACTIONS ON或者响应API将其设置为ON的时候,则开启隐性事务模式。在该模式下,每个 SQL 语句都视为单独的事务,和自动提交模式有点类似,但是很明显的区别是:自动模式下会根据单个SQL语句执行是否成功,自动提交或回滚,但是在隐性模式下,无论单个SQL语句执行成功与否,都需要手动提交或回滚。
最后,再补点自动提交模式和其他两种模式的转换:
自动提交模式是 SQL Server 数据库引擎的默认事务管理模式。每个 Transact-SQL 语句在完成时,都被提交或回滚。如果一个语句成功地完成,则提交该语句;如果遇到错误,则回滚该语句。只要没有显式事务或隐性事务覆盖自动提交模式,与数据库引擎实例的连接就以此默认模式操作。自动提交模式也是 ADO、OLE DB、ODBC 和 DB 库的默认模式。
在 BEGIN TRANSACTION 语句启动显式事务或隐性事务设置为开启之前,与数据库引擎实例的连接一直以自动提交模式操作。当提交或回滚显式事务或关闭隐性事务模式时,连接将返回到自动提交模式。
如果设置为 ON,SET IMPLICIT_TRANSACTIONS 会将连接设置为隐式事务模式。如果设置为 OFF,则使连接恢复为自动提交事务模式。
- --事务的分类
- 事务的分类
- 事务与sql语句的分类
- Spring事务管理器分类
- Spring事务管理器分类
- Spring事务分类
- Java事务、分类及其差异
- oralce的自治事务(事务中的事务)
- MySQL之事务编程(一)事务概述及其事务分类
- 事务和事务的隔离
- Spring 的事务,分布式事务。
- 事务&事务的隔离级别
- Spring的事务,什么是事务?
- 事务及事务的特性
- listview的分类,仿京东分类
- 事务的定义,事务的作用以及Spring事务原理
- 事务的定义,事务的作用以及Spring事务原理
- 事务的定义,事务的作用以及Spring事务原理
- 应用切换到后台一段时间再切回来会崩溃
- Selective Search for Object Recognition
- cxf引用webservice生成java代码
- ocx属性添加
- Servlet生命周期
- 事务的分类
- C# 文本框退出按钮
- TypeError: jQuery.easing[this.easing] is not a function
- 网站性能优化
- OpenWrt使用cron实现路由器定时重启 之二
- 关于AutoCompleteTextView的下拉列表
- 文本框只能输入数字和小数点
- Android6.0使用Https出现Handshake failed错误
- Struts中OGNL语言