第一种:


declare   @iErrorCount   int
set@iErrorCount=0
begintran Tran1
   insertinto t1(Id, c1) values(1,'1')
    set@iErrorCount=@iErrorCount+@@error    insertinto t1(Id, c1) values('XX2','2')
    set@iErrorCount=@iErrorCount+@@error if@iErrorCount=0
begin   
    COMMITTRAN Tran1  --执行事务
end
else   
begin   
    ROLLBACKTRAN Tran1  --回滚事务
end

第二种:


Begin Try
    BeginTran Tran1
        insertinto t1(Id, c1) values(1,'1')
        insertinto t1(Id, c1) values('XX2','2')  --此句产生错误
    COMMITTRAN Tran1
END Try
Begin Catch
    raiserror 50005N'出错了'
    ROLLBACKTRAN Tran1     ---出错后调用回滚
END Catch

第三种:

SET XACT_ABORT ON----语句产生运行时错误,则整个事务将终止并回滚。
BeginTran
    INSERTINTO t1(Id, c1) VALUES(1,'1')
    INSERTINTO t1(Id, c1) VALUES('XX2','2') --此句产生错误时,就会回滚整个事务
CommitTran

SQL Server 事务及回滚事务的几种方法的更多相关文章

  1. [SQL]SQL Server 事务及回滚事务

    第一种: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/ ...

  2. SQL Server 批量插入数据的两种方法

    在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题.下面介绍 SQL Server支持的两种批 ...

  3. SQL Server 批量插入数据的两种方法(转)

    此文原创自CSDN TJVictor专栏:http://blog.csdn.net/tjvictor/archive/2009/07/18/4360030.aspx 在SQL Server 中插入一条 ...

  4. 转:SQL Server 批量插入数据的两种方法

    在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题.下面介绍SQL Server支持的两种批量 ...

  5. SQL Server中迁移数据的几种方法

    1.通过工具"DTS"的设计器进行导入或者导出 DTS的设计器功能强大,支持多任务,也是可视化界面,容易操作,但知道的人一般不 多,如果只是进行SQL Server数据库中部分表的 ...

  6. SQL Server 查询表的记录数(3种方法,推荐第一种)

    http://blog.csdn.net/smahorse/article/details/8156483 --SQL Server 查询表的记录数 --one: 使用系统表. SELECT obje ...

  7. 【转】SQL Server 查询表的记录数(3种方法,推荐第一种)

    --SQL Server 查询表的记录数 --one: 使用系统表. SELECT object_name (i.id) TableName, rows as RowCnt FROM sysindex ...

  8. SQL Server数据导入导出的几种方法

    在涉及到SQL Server编程或是管理时一定会用到数据的导入与导出, 导入导出的方法有多种,结合我在做项目时的经历做一下汇总: 1. SQL Server导入导出向导,这种方式是最方便的. 导入向导 ...

  9. SQL Server 查看表定义的 2 种方法

    方法 1. 用SQL Server Management Studio 第一步找到要查看的表,右键 第二步点设计 方法 2. sp_help @objname = 'tableName' execut ...

随机推荐

  1. viewpager处理(一):让viewpager不能滑动

    1.实现原理: 自定义viewpager,重写onTouchEvent方法,什么触摸事件都不响应即可让viewpager不能滑动. 2.代码如下 public class NoScrollViewPa ...

  2. 根据View获取该控制器

    //根据View获取控制器 - (UIViewController*)viewController { for (UIView* next = [self superview]; next; next ...

  3. UICollectionView之自定义Layout

    #import <UIKit/UIKit.h> @interface WQViewController : UIViewController - (id)initWithFrame:(CG ...

  4. iwlist等工具的移植

    http://blog.csdn.net/jk110333/article/details/8658054 参考了这边文章 -------------------------------------- ...

  5. spice-vdagent

    The spice-vdagent should be running in the guest. Have you installed the spice guest tools in your w ...

  6. ASP之Eval、Execute、ExecuteGlobal区别分析

    Eval.Execute.ExecuteGlobal 这三个语句(函数)都是执行字符串表达式,不过它们之间又有所不同. Eval 计算一个表达式的值并返回结果. 语法:[result = ]eval( ...

  7. 不同版本(2.3,2.4,2.5) web.xml 的web-app头信息

    原址:点击打开链接 Servlet 2.3 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE w ...

  8. Oracle中清除BIN$开头的垃圾表的解决办法

    10g的新特性flashback闪回区 在10g中bin开头表示已经删除的放在回收站的表,oracle在删除表时并没有彻底的删除,而是把表放入回收站!purge recyclebin清空回收站即可. ...

  9. Hadoop RPC机制

    RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.Hadoop底层的交互都是通过 rp ...

  10. [转]Android之Context和Activity互相转换

    1.context转换为activity Activity activity = (Activity) context; 2.从activity得到context 在activity的方法中用cont ...