TSql Transaction

1,Begin transaction 开启一个事务,@@trancount 增加,可以为开启的事务命名

begin transaction tranname,这样rollback transaction 的时候,就可以选择性的回滚事务,而不是回滚到最外层事务。

多个tranname可以相同,但是在rollback transaction tranname时,会回滚到最外层的tranname,导致@@trancount减少多个。

2,Save transaction 不会开启一个事务,只是在事务内增加一个SavePoint,@@trancount不变。

save transaction savepointname 是必须的,多个savepoint的name可以是相同的,在rollback transaction savepointname的时候,只回滚到最内层的上一个savepoint。

3,rollback transaction 回滚事务或SavePoint

rollback transaction 将整个事务回滚,@@trancount减少到0

rollback transaction savepoint,只是在一个事务内,回滚到上一个SavePoint,而不是回滚整个事务,@@trancount不变

rollback transaction tranname,是回滚到tranname标识的最外层事务,@@trancount 减1或多个。

select * from [dbo].[test]

print @@trancount

begin tran tx
begin tran tx

update dbo.test set id=4

save tran tx
update dbo.test set id=2

save tran tx

update dbo.test set id=3

rollback tran tx
rollback tran tx

rollback tran tx
时间: 2024-08-08 22:18:45

TSql Transaction的相关文章

整理常用的T-SQL语句

1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'--- 开始 备份BACKUP DATABASE pubs TO testBack 4.说明:创建新表create tabl

T-SQL开发 - 10.IDENTITY属性使用小结

从SQL Server 2012开始有了Sequence,简单用列如下: CREATE SEQUENCE TestSeq START WITH 1 INCREMENT BY 1; SELECT NEXT VALUE FOR TestSeq AS NextValue; 在这之前,表中生成序列号大多都是借助IDENTITY列属性,当然也有一些时候,是在自定义表中,自己维护序列号. 一. 创建IDENTITY列 if OBJECT_ID('test','U') is not null     drop

【T-SQL性能优化】01.TempDB的使用和性能问题

以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础]02.联接查询 [T-SQL基础]03.子查询 [T-SQL基础]04.表表达式-上篇 [T-SQL基础]04.表表达式-下篇 [T-SQL基础]05.集合运算 [T-SQL基础]06.透视.逆透视.分组集 [T-SQL基础]07.数据修改 [T-SQL基础]08.事务和并发 [

SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章)

SQL Server2012 T-SQL基础教程--读书笔记(8 - 10章) 示例数据库:点我 CHAPTER 08 数据修改 8.1 插入数据 8.1.1 INSERT VALUES 语句 8.1.2 INSERT SELECT 语句 8.1.3 INSERT EXEC 语句 8.1.4 SELECT INTO 语句 8.1.5 BULK INSERT 语句 8.1.6 标识列属性和序列对象 8.1.6.1 标识列属性 8.1.6.2 序列对象 8.2 删除数据 8.2.1 DELETE 语

数据库系列之T-SQL(事务)

什么是事务? 事务是一个不可分割的操作,要么全部执行,要么全部不执行 事务有什么用? 保证一个业务的完整执行. 怎么用事务? 3.1 事务的分类 显示事务:用BEGIN TRANSACTION明确指定事务的开始,这是最常用的事务类型. 隐性事务:通过设置SET IMPLICIT_TRANSACTIONS ON 语句,将隐性事务模式设置为打开,下一个语句自动启动一个新事务.当该事务完成时,再下一个 T-SQL 语句又将启动一个新事务. 自动提交事务:这是 SQL Server 的默认模式,它将每条

T- SQL性能优化详解

故事开篇:你和你的团队经过不懈努力,终于使网站成功上线,刚开始时,注册用户较少,网站性能表现不错,但随着注册用户的增多,访问速度开始变慢,一些用户开始发来邮件表示抗议,事情变得越来越糟,为了留住用户,你开始着手调查访问变慢的原因. 经过紧张的调查,你发现问题出在数据库上,当应用程序尝试访问/更新数据时,数据库执行得相当慢,再次深入调查数据库后,你发现数据库表增长得很大,有些表甚至有上千万行数据,测试团队开始在生产数据库上测试,发现订单提交过程需要花5分钟时间,但在网站上线前的测试中,提交一次订单

T-SQL函数及用法--转

转自http://www.cnblogs.com/qixuejia/archive/2010/07/14/1777105.html 1. 聚合函数 (1) AVG 函数功能返回组中值的平均值.空值将被忽略 语法AVG ( [ ALL | DISTINCT ] expression ) (2) MAX 函数功能返回表达式的最大值 语法MAX ( [ ALL | DISTINCT ] expression ) (3) MIN 函数功能返回表达式的最小值 语法MIN ( [ ALL | DISTINC

SQLserver运维必备:T-SQL语句简介

小生博客:http://xsboke.blog.51cto.com 小生 Q Q:1770058260 -------谢谢您的参考,如有疑问,欢迎交流 一.T-SQL语言组成 T-SQL主要有三种语言组成: 1.      DML:数据操纵语言(data manipulation language) 查询.插入.删除和修改数据 SELECT.INSERT.UPDATE.DELETE 2.      DDL:数据定义语言(data definition language) 建立数据库.数据库对象和

那些年我们写过的T-SQL(下篇)(转)

原文:http://www.cnblogs.com/wanliwang01/p/TSQL_Base04.html 下篇的内容很多都会在工作中用到,尤其是可编程对象,那些年我们写过的存储过程,有木有?到目前为止很多大型传统企业仍然很依赖存储过程.这部分主要难理解的部分是事务和锁机制这块,本文会进行简单的阐述.虽然很多SQL命令可以通过工具自动生成,但如果能通过记忆的话速度会更快,那么留给自己思考的时间就越多.此外,由于锁这部分知识比较复杂,不同的数据库厂商的实现也有不同,SQLSERVER除了我们