SQL 中事务的分类
先讲下事务执行流程:
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 中事务的分类的更多相关文章
- SQL中事务以及全局变量的使用
事务的定义 简单的说,事务处理可以用来维护数据库的完整性,保证一批SQL语句要么全执行,要么全部不执行 事务的特性 原子性 一致性 持久性 隔离性 注:一元九个 事务的使用 sel ...
- MySQL中事务的分类
从事务理论的角度来看,可以把事务分为以下几种类型 扁平事务(Flat Transactions) 带有保存点的扁平事务(Flat Transactions with Savepoints) 链事务(C ...
- (转载)SQL中导入图片
SQL中导入图片 分类: 论坛精贴 2006-05-10 12:07 398人阅读 评论(0) 收藏 举报 sqlimage服务器insertlogingo 1.建立过程CREATE PROCEDUR ...
- 为什么说JAVA中要慎重使用继承 C# 语言历史版本特性(C# 1.0到C# 8.0汇总) SQL Server事务 事务日志 SQL Server 锁详解 软件架构之 23种设计模式 Oracle与Sqlserver:Order by NULL值介绍 asp.net MVC漏油配置总结
为什么说JAVA中要慎重使用继承 这篇文章的主题并非鼓励不使用继承,而是仅从使用继承带来的问题出发,讨论继承机制不太好的地方,从而在使用时慎重选择,避开可能遇到的坑. JAVA中使用到继承就会有两 ...
- PL/SQL程序控制结构及在PL/SQL中更改数据和管理事务
1.条件控制 A. IF条件分支语法: if (条件1) then 语句; elsif (条件2) then 语句; elsif (条件3) then 语句; else 语句; end if; B . ...
- SQL Server中事务、锁定和阻塞
事务是什么 在SQL Server中事务是构成一个工作逻辑单元的一系列任务,也就说多个任务放在一起执行,这些任务要么全部执行成功,要么全部执行失败. 通过事务我们可以保证数据的完整性,例如:用户A给用 ...
- 存储过程中使用事务,sql server 事务,sql事务
一.存储过程中使用事务的简单语法 在存储过程中使用事务时非常重要的,使用数据可以保持数据的关联完整性,在Sql server存储过程中使用事务也很简单,用一个例子来说明它的语法格式: 代码 ...
- SQL server中事务的四个属性特征(ACID)
事务的概念.类型和四个特征(ACID). 1.事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位. 通过事务,SQL Se ...
- 第十七周翻译-SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志
SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志 作者:Tony Davis,2012/01/27 翻译:赖慧芳 译文: 该系列 本文是Stairway系列的一部分:SQL ...
随机推荐
- 微信分享config:ok 但自定义内容无效
一.问题 使用微信 JSSDK 分享,出现自定义内容无效 ,也就是分享出去的内容不是你配置的内容. 但在调试过程中发现 congfig 都是 ok 的 二.解决 检查config 配置是否正确 js ...
- Python快速学习09: 函数的参数
前言 系列文章:[传送门] 继续干起来!! 正文 我们已经接触过函数,函数是可以被引用的(访问或者以其他变量作为其别名),也作为参数传入函数,以及作为列表和字典等等容器对象的元素(function)的 ...
- ZOJ Problem Set - 3706
#include <cstdio> #include <cstdlib> #include <cstring> #include <set> #incl ...
- ELK实践(二):收集Nginx日志
Nginx访问日志 这里补充下Nginx访问日志使用的说明.一般在nginx.conf主配置文件里需要定义一种格式: log_format main '$remote_addr - $remote_u ...
- 不一样的ssm
这里的ssm不是指的spring+springmvc+mybatis,而是指的spring+springmvc+mongodb,下面我将搭建一个简单的“ssm”框架. 1.新建一个maven项目,骨架 ...
- Magicodes.NET框架之路——让代码再飞一会(ASP.NET Scaffolding)
首先感谢大家对Magicodes.NET框架的支持.就如我上篇所说,框架成熟可能至少还需要一年,毕竟个人力量实在有限.希望有兴趣的小伙伴能够加入我们并且给予贡献.同时有问题的小伙伴请不要在群里询问问题 ...
- 给HTML页面指定元素添加属性,添加父元素
给HTML页面指定元素添加属性,添加父元素 下面拿一个给富文本中所有的图片增加layer弹窗效果. 思路: 给富文本父元素设置属性. 获取父元素里所有的img 此处用到querySelectorA ...
- [转]What is Blue Prism?
本文转自:https://www.guru99.com/blue-prism-tutorial.html#5 What is Blue Prism? Blue Prism is a UK-based ...
- vim撤销undo与反撤销redo
普通模式下 u 撤销 ctrl + r 反撤销
- mysql配置优化浅谈(一)
MySQL对于web架构性能的影响最大,也是关键的核心部分.MySQL的设置是否合理优化,直接影响到web的速度和承载量!同时,MySQL也是优化难度最大的一个部分,不但需要理解一些MySQL专业知识 ...