Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1237771
  • 博文数量: 510
  • 博客积分: 20296
  • 博客等级: 上将
  • 技术积分: 4680
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-30 03:58
文章存档

2011年(13)

2010年(92)

2009年(242)

2008年(163)

我的朋友

分类: 数据库开发技术

2010-08-21 17:28:55

第一种:

declare   @iErrorCount   int 
set @iErrorCount = 0
begin tran Tran1
   
insert into t1(Id, c1) values(1,'1')
    
set @iErrorCount=@iErrorCount+@@error

   
insert into t1(Id, c1) values('XX2','2')
    
set @iErrorCount=@iErrorCount+@@error

if @iErrorCount=0 
begin   
    
COMMIT TRAN Tran1  --执行事务
end 
else   
begin   
    
ROLLBACK TRAN Tran1  --回滚事务
end


第二种:

Begin Try
    
Begin Tran Tran1
        
insert into t1(Id, c1) values(1,'1')
        
insert into t1(Id, c1) values('XX2','2')  --此句产生错误
    COMMIT TRAN Tran1
END Try
Begin Catch 
    
raiserror 50005N'出错了' 
    
ROLLBACK TRAN Tran1     ---出错后调用回滚
END Catch 


第三种:

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

阅读(798) | 评论(0) | 转发(0) |
0

上一篇:报表统计(sql面试题)

下一篇:Group By总结

给主人留下些什么吧!~~