sql server事务的使用是为了确保数据的一致性。

通常写法

begin tran
--sql 语句1
--sql 语句2
--sql 语句3
commit tran

上面写法存在隐患,当操作(增删改)是由null引发的错误时,事务会跳过错误继续执行正常的语句。例如:

--创建表Student
create table Student(Name nvarchar(20) not null)
--建立事务
begin tran
inserted into Student(Name) values (null)
inserted into Student(Name) values ('小札')
inserted into Student(Name) values (null)
commit tran
--由null引发的错误,insert,delete,update都会跳过错误继续执行

上面结果会多一条数据为“小札”。为了避免了这样的问题:

有三种方法:其中@@error,@@trancount是全局变量,只要发生错误,@@error不等于0,只要执行一次事务,@@trancount就+1,回滚会变为0。

【方法一】:xact_abort on/off  on:开启,事务一旦出问题,全部回滚  off:关闭,不检查事务是否发生错误。

set xact_abort on
begin tran
--sql语句1
--sql语句2
--sql语句3
commit

【方法二】:每条操作语句后面判断是否回滚。

begin tran
--sql语句1
if @@error<>0beginrollback tranreturn --这里除了return跳出,也可以使用goto+标签跳出事务end
--sql语句2
if @@error<>0beginrollback tranreturnend
commit tran

【方法三】:try  catch

begin tranbegin try--sql语句1--sql语句2--sql语句3end trybegin catchif @@trancount>0rollback tranend catchif @@trancount>0commit tran

转载于:https://www.cnblogs.com/itsone/p/10273317.html

SQL SERVER 事务的使用(tran)相关推荐

  1. SQL Server事务的隔离级别

    SQL Server事务的隔离级别 ########## 数据库中数据的一致性 ########## 针对并发事务出现的数据不一致性,提出了4个级别的解决方法:  隔离级别  第一类丢失更新  脏读 ...

  2. SQL Server事务回滚对自增键的影响

    SQL Server事务回滚时是删除原先插入导致的自增值,也就是回滚之前你你插入一条数据导致自增键加1,回滚之后还是加1的状态 --如果获取当前操作最后插入的identity列的值: select @ ...

  3. sql server 事务_如何使用显式SQL Server事务回滚

    sql server 事务 In this article, we will explore the process of rollback an explicit SQL Server transa ...

  4. 如何处理SQL Server事务复制中的大事务操作

    如何处理SQL Server事务复制中的大事务操作 事务复制的工作机制 事务复制是由 SQL Server 快照代理.日志读取器代理和分发代理实现的.快照代理准备快照文件(其中包含了已发布表和数据库对 ...

  5. SQL Server 事务日志

    https://docs.microsoft.com/en-us/sql/relational-databases/logs/the-transaction-log-sql-server?view=s ...

  6. Sql Server事务日志

    本文导读:SQL Server中的数据库都是由一或多个数据文件以及一或多个事务日志文件组成的.SQL Server事务日志主要是用来记录所有事务对数据库所做的修改,SQL SERVER利用事务日志来确 ...

  7. 了解SQL Server事务日志备份和完整备份的日志序列号

    This article explores the SQL Server Transaction log backups and log sequence number (LSN) in combin ...

  8. 使用SQL Server事务复制将SQL Server数据库迁移到Azure SQL数据库

    In this guide, we'll discuss more about migrating a SQL Server database to Azure SQL Database using ...

  9. 如何使用损坏或删除SQL Server事务日志文件重建数据库

    This is the last article, but not the least one, in the SQL Server Transaction Log series. In this s ...

最新文章

  1. Java注解Annotation详解
  2. 深入理解JVM虚拟机(三):虚拟机性能监控工具
  3. 用矩阵内积的办法构造迭代次数受控的神经网络1:0.6:0.1=4:3:2
  4. openresty 前端开发入门四之Redis篇
  5. div alert html,基于jQuery的弹出消息插件 DivAlert之旅(一)
  6. 搭建基于.NetFrameWork的私有nuget服务端及打包项目发布上传
  7. stm32F051系列教程 1.点灯
  8. 怎么对document.write写出来的内容调整对齐方式_写论文可能用到的各种Word技巧
  9. Python中的正则表达式(re)
  10. Angular 2 ViewChild ViewChildren
  11. 百度网盘有linux版本的,百度网盘Linux版发布,网友反馈“限速该有还是有”
  12. Android 垃圾分类APP(三)垃圾分类之语音输入
  13. 3D打印技术让实现更多天马行空的创意
  14. BCB:内存泄漏检查工具CodeGuard
  15. ListView适配器
  16. 公司午休 同事打鼾怎么办?
  17. Devcon2 (第二届全球区块链开发者峰会)演讲PPT下载
  18. 2021了,为什么说音视频技术是技术风口?Android音视频开发这么吃香
  19. 互联网公司刻板印象合集:程序员都秃头,商务个个是人精
  20. 2021软科计算机科学与技术,2021软科排名,NTU 十学科跻身世界前十!

热门文章

  1. 自动化测试环境搭建之RFS自动化测试框架全攻略
  2. 数据资产目录建设之数据分类全解(上)
  3. 自定义POI的excel工具类-xls-xlsx
  4. 【办公-excel】两个时间相减
  5. 毕业设计微信小程序选题
  6. 项管行知02--工作环境
  7. 【无标题】有向图的创建、求度和遍历
  8. ubuntu下发送邮件到外部邮箱
  9. 如果令 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 分别等于
  10. 使用keytool工具常用证书转换