--创建表:

GO

CREATE TABLE [dbo].[tb1](

[Id] [int] NOT NULL,

[c1] [nvarchar](50) NULL,

[c2] [datetime] NULL,

CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED

(

[Id] ASC

)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY] )

ON [PRIMARY]

GO

--解决方案(一)

declare   @iErrorCount   int

set @iErrorCount = 0

begin tran Tran_2015_09_30

  insert into tb1(Id, c1) values(1,'1')

  set @iErrorCount=@iErrorCount+@@error

  insert into tb1(Id, c1) values(2,'2')

  set @iErrorCount=@iErrorCount+@@error

  insert into tb1(Id, c1) values('xxxx3','3')

  set @iErrorCount=@iErrorCount+@@error

  insert into tb1(Id, c1) values(4,'4')

  set @iErrorCount=@iErrorCount+@@error

  insert into tb1(Id, c1) values(5,'5')

  set @iErrorCount=@iErrorCount+@@error

if @iErrorCount=0

begin

  COMMIT TRAN Tran_2015_09_30 --执行事务

end

else

begin

  ROLLBACK TRAN Tran_2015_09_30 --回滚事务

end

GO

--解决方案(二)

begin try
     begin tran Tran_2015_09_30
 
        insert into tb1(Id, c1) values(1,'1')
 
        insert into tb1(Id, c1) values(2,'2')
 
        insert into tb1(Id, c1) values('xxxx3','3')
 
        insert into tb1(Id, c1) values(4,'4')
 
        insert into tb1(Id, c1) values(5,'5')
 
    COMMIT TRAN Tran_2015_09_30
end try
begin catch
     raiserror 50005N'出错了'
     ROLLBACK TRAN Tran_2015_09_30  --回滚事务
end catch

GO

--解决方案(三)

--set XACT_ABORT ON   ---如果不设置该项为ON,在sql中默认为OFF,那么只只回滚产生错误的 Transact-SQL 语句;设为ON,回滚整个事务

SET XACT_ABORT ON  --语句产生运行时错误,则整个事务将终止并回滚。
Begin Tran
    INSERT INTO tb1(Id, c1) VALUES(1,'1')
    INSERT INTO tb1(Id, c1) VALUES('XX2','2') --此句产生错误时,就会回滚整个事务
Commit Tran

GO

begin tran t1 ---启动一个事务

update [water].[dbo].[ErrorInf]
set ErrorMessage='test'
where ID=6

insert into [water].[dbo].[ErrorInf]([ID],ErrorMessage,[Description])
Values(1,'test1','test1')

commit tran t1  ---提交事务

--//参考:

1. EmanLee, Eman Lee's Space (blog, website)

SQL Server 事务处理 回滚事务  ;

2. 代码泪 SQL Server 事务及回滚事务

SQL Server 事务处理 回滚事务的更多相关文章

  1. SQL SERVER事务处理

    SQL SERVER事务处理   一.事务定义: 事务是单个的工作单元.如果某一事务成功,则在该事务中进行的所有数据更改均会提交,成为数据库中的永久组成部分. 如果事务遇到错误且必须取消或回滚,则所有 ...

  2. sql server 事务处理

    事物处理   事务是SQL Server中的单个逻辑单元,一个事务内的所有SQL语句作为一个整体执行,要么全部执行,要么都不执行. 事务有4个属性,称为ACID(原子性.一致性.隔离性和持久性)   ...

  3. Oracle与SQL Server事务处理的比较

    事务处理是所有大型数据库产品的一个关键问题,各数据库厂商都在这个方面花费了很大精力,不同的事务处理方式会导致数据库性能和功能上的巨大差异.事务处理也是数据库管理员与数据库应用程序开发人员必须深刻理解的 ...

  4. c# + Sql server 事务处理

    事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位. 通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便 ...

  5. sql server存储过程回滚事务

    SET NOCOUNT ON这个很常用 作用:阻止在结果集中返回显示受T-SQL语句或则usp影响的行计数信息. 当SET ONCOUNT ON时候,不返回计数,当SET NOCOUNT OFF时候, ...

  6. SQL SERVER 数据库实用SQL语句

    --查看指定表的外键约束 select * from sysobjects where parent_obj in( select id from sysobjects where name='表名' ...

  7. SQL Server 2000中查询表名,列名及字段类型

    经常碰到一些忘记表名称的情况,此时只记得个大概,此时可通过查询系统表Sysobjects找到所要的表名,如要查找包含用户的表名,可通过以下SQL语句实现, Select * From sysobjec ...

  8. TransactionScope事务处理方法介绍及.NET Core中的注意事项 SQL Server数据库漏洞评估了解一下 预热ASP.NET MVC 的VIEW [AUTOMAPPER]反射自动注册AUTOMAPPER PROFILE

    TransactionScope事务处理方法介绍及.NET Core中的注意事项   作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/10170712.ht ...

  9. SQL点滴9—SQL Server中的事务处理以及SSIS中的内建事务

    原文:SQL点滴9-SQL Server中的事务处理以及SSIS中的内建事务 我们可以把SSIS中的整个package包含在一个事务中,但是如果在package的执行过程中有一个表需要锁定应该怎么处理 ...

随机推荐

  1. Nazo解密游戏攻略

    啊,终于腾出时间来玩这个游戏了,顺手写一下攻略吧…… 第0关:http://cafebabe.cc/nazo/ 第一关:第一关很简单 点一下就好了 http://cafebabe.cc/nazo/le ...

  2. Spring MVC整合Velocity

    Velocity模板(VM)语言介绍 Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由j ...

  3. HDU 1504 Disk Tree

    转载请注明出处:http://blog.csdn.net/a1dark 分析:查了一下这题.发现网上没有什么关于这道题的解题报告.其实题目意思挺好懂的.就是给你一些文件的目录结构.然后让你把它们组合在 ...

  4. Java Swing 探索(一)LayoutManager

    BorderLayout FlowLayout GridLayout GridBagLayout CardLayout BoxLayout 1.BorderLayout java.lang.Objec ...

  5. iOS开发——动画编程Swift篇&(五)CAKeyframeAnimation

    CAKeyframeAnimation //CAKeyframeAnimation-关键针动画 @IBAction func cakFly() { let animation = CAKeyframe ...

  6. 【Unity3D】【NGUI】怎样动态给EventDelegate加入參数

    NGUI版本号:3.6.8 注意:參数必须是公共成员变量.不能是栈上的.或者私有的(就是暂时在函数里面定义的或者是函数的參数都不行) using UnityEngine; using System.C ...

  7. MySQL · 特性分析 · 内部临时表

    http://mysql.taobao.org/monthly/2016/06/07/#rd MySQL中的两种临时表 外部临时表 通过CREATE TEMPORARY TABLE 创建的临时表,这种 ...

  8. 字典树(Trie)的java实现

    一.定义 字典树又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计.它的优点是:利用 ...

  9. servlet 和filter 抛出404等异常

    1. servlet抛出错误代码异常,如404 public void doGet(HttpServletRequest request, HttpServletResponse response) ...

  10. c++ 设计模式7 (Bridge 桥模式)

    4.2 Bridge 桥模式 动机: 由于某些类型的固有的实现逻辑,使得它们具有两个变化的维度,乃至多个变化的维度. 代码示例: 实现一个Messager,含有基本功能PlaySound,Connec ...