先讲下事务执行流程:

 BEGIN和COMMIT

PRINT @@TRANCOUNT --@@TRANCOUNT统计事务数量
BEGIN TRAN PRINT @@TRANCOUNT BEGIN TRAN PRINT @@TRANCOUNT COMMIT TRAN --只提交一个事务 PRINT @@TRANCOUNT COMMIT TRAN PRINT @@TRANCOUNT

结果:

ROLLBACK

PRINT @@TRANCOUNT
BEGIN TRAN
PRINT @@TRANCOUNT
BEGIN TRAN
PRINT @@TRANCOUNT
ROLLBACK TRAN --回滚所有事务
PRINT @@TRANCOUNT

结果:

  由上可知BEGIN TRAN 开始事务,使事务数量加一

      COMMIT TRAN 使事务减一,提交最新开辟的事务

      ROLLBACK 使事务数量直接减为0,也就是回滚

事务分类:

  1.显示事务

  2.隐式事务模式

  3.自动提交事务

--显示事务

SET NOCOUNT ON
SET IMPLICIT_TRANSACTIONS OFF --设置为显示事务模式,也就是自动提交模式
PRINT '显示事务开始前:'+CAST(@@TRANCOUNT AS varchar())
GO
IF EXISTS(SELECT *FROM sys.tables WHERE name='Table1')
DROP TABLE Table1 CREATE TABLE Table1
(
col1 int
)
GO
INSERT INTO Table1 VALUES()
PRINT '插入数据时事务数:'+CAST(@@TRANCOUNT AS varchar()) BEGIN TRAN
PRINT '开始事务时的事务数:'+CAST(@@TRANCOUNT AS varchar())
COMMIT TRAN
GO
PRINT '提交事务后的事务数:'+ CAST(@@TRANCOUNT AS varchar())
GO

结果:

  

--隐式事务模式

SET IMPLICIT_TRANSACTIONS ON --打开隐式事务模式
INSERT INTO Table1 VALUES()
INSERT INTO Table1 VALUES()
PRINT '插入数据时事务数:'+CAST(@@TRANCOUNT AS varchar())
COMMIT TRAN
--如果不显示提交事务,那么如果下一条语句是(INSERT,DELECT,UPDATE,CREATE,TRUNCAST TABLE ,所有DROP,ALTER TABLE,GRINT,REVOK,SELECT)就会自动新建一个事务

PRINT '提交隐式事务后的事务数:'+CAST(@@TRANCOUNT AS varchar())
GO

结果:

  

--自动提交事务

--当设置IMPLICIY_TRANSACTIONS OFF 就恢复为自动提交模式
SET IMPLICIT_TRANSACTIONS OFF
GO
INSERT INTO Table1 VALUES(3) --没有错误自动提交
PRINT @@TRANCOUNT INSERT INTO Table1 VALUES(3,3) --有错误自动回滚
PRINT @@TRANCOUNT

 结果:

  

--没有错误自动提交

  

--有错误自动回滚

  

SQL 中事务的分类的更多相关文章

  1. SQL中事务以及全局变量的使用

    事务的定义 简单的说,事务处理可以用来维护数据库的完整性,保证一批SQL语句要么全执行,要么全部不执行 事务的特性 原子性  一致性  持久性  隔离性        注:一元九个 事务的使用 sel ...

  2. MySQL中事务的分类

    从事务理论的角度来看,可以把事务分为以下几种类型 扁平事务(Flat Transactions) 带有保存点的扁平事务(Flat Transactions with Savepoints) 链事务(C ...

  3. (转载)SQL中导入图片

    SQL中导入图片 分类: 论坛精贴 2006-05-10 12:07 398人阅读 评论(0) 收藏 举报 sqlimage服务器insertlogingo 1.建立过程CREATE PROCEDUR ...

  4. 为什么说JAVA中要慎重使用继承 C# 语言历史版本特性(C# 1.0到C# 8.0汇总) SQL Server事务 事务日志 SQL Server 锁详解 软件架构之 23种设计模式 Oracle与Sqlserver:Order by NULL值介绍 asp.net MVC漏油配置总结

    为什么说JAVA中要慎重使用继承   这篇文章的主题并非鼓励不使用继承,而是仅从使用继承带来的问题出发,讨论继承机制不太好的地方,从而在使用时慎重选择,避开可能遇到的坑. JAVA中使用到继承就会有两 ...

  5. PL/SQL程序控制结构及在PL/SQL中更改数据和管理事务

    1.条件控制 A. IF条件分支语法: if (条件1) then 语句; elsif (条件2) then 语句; elsif (条件3) then 语句; else 语句; end if; B . ...

  6. SQL Server中事务、锁定和阻塞

    事务是什么 在SQL Server中事务是构成一个工作逻辑单元的一系列任务,也就说多个任务放在一起执行,这些任务要么全部执行成功,要么全部执行失败. 通过事务我们可以保证数据的完整性,例如:用户A给用 ...

  7. 存储过程中使用事务,sql server 事务,sql事务

    一.存储过程中使用事务的简单语法       在存储过程中使用事务时非常重要的,使用数据可以保持数据的关联完整性,在Sql server存储过程中使用事务也很简单,用一个例子来说明它的语法格式: 代码 ...

  8. SQL server中事务的四个属性特征(ACID)

    事务的概念.类型和四个特征(ACID). 1.事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位. 通过事务,SQL Se ...

  9. 第十七周翻译-SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志

    SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志 作者:Tony Davis,2012/01/27 翻译:赖慧芳 译文: 该系列   本文是Stairway系列的一部分:SQL ...

随机推荐

  1. 微信分享config:ok 但自定义内容无效

    一.问题 使用微信 JSSDK 分享,出现自定义内容无效 ,也就是分享出去的内容不是你配置的内容. 但在调试过程中发现 congfig 都是 ok 的 二.解决 检查config 配置是否正确 js ...

  2. Python快速学习09: 函数的参数

    前言 系列文章:[传送门] 继续干起来!! 正文 我们已经接触过函数,函数是可以被引用的(访问或者以其他变量作为其别名),也作为参数传入函数,以及作为列表和字典等等容器对象的元素(function)的 ...

  3. ZOJ Problem Set - 3706

    #include <cstdio> #include <cstdlib> #include <cstring> #include <set> #incl ...

  4. ELK实践(二):收集Nginx日志

    Nginx访问日志 这里补充下Nginx访问日志使用的说明.一般在nginx.conf主配置文件里需要定义一种格式: log_format main '$remote_addr - $remote_u ...

  5. 不一样的ssm

    这里的ssm不是指的spring+springmvc+mybatis,而是指的spring+springmvc+mongodb,下面我将搭建一个简单的“ssm”框架. 1.新建一个maven项目,骨架 ...

  6. Magicodes.NET框架之路——让代码再飞一会(ASP.NET Scaffolding)

    首先感谢大家对Magicodes.NET框架的支持.就如我上篇所说,框架成熟可能至少还需要一年,毕竟个人力量实在有限.希望有兴趣的小伙伴能够加入我们并且给予贡献.同时有问题的小伙伴请不要在群里询问问题 ...

  7. 给HTML页面指定元素添加属性,添加父元素

    给HTML页面指定元素添加属性,添加父元素 下面拿一个给富文本中所有的图片增加layer弹窗效果. 思路: 给富文本父元素设置属性. 获取父元素里所有的img   此处用到querySelectorA ...

  8. [转]What is Blue Prism?

    本文转自:https://www.guru99.com/blue-prism-tutorial.html#5 What is Blue Prism? Blue Prism is a UK-based ...

  9. vim撤销undo与反撤销redo

    普通模式下  u 撤销 ctrl + r 反撤销

  10. mysql配置优化浅谈(一)

    MySQL对于web架构性能的影响最大,也是关键的核心部分.MySQL的设置是否合理优化,直接影响到web的速度和承载量!同时,MySQL也是优化难度最大的一个部分,不但需要理解一些MySQL专业知识 ...