加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

sql server事务的两种写法

(2013-05-20 17:13:46)
标签:

sqlserver

数据库事务

it

分类: sqlserver

第一种:只操作一张表(简单事务)

declare @error int --定认错误参数

set @error=0 --初始化参数

--开始事务

begin tran

  insert into A(a,b,c) values('aa','bb','cc')

  set @error=@error+@@error --记录错误点

 

--结束事务

if(@error<>0)

 begin

  rollback tran --回滚事务

 end

else

 begin

 commit tran  --提交事务

 end

 

 

第二种:同时操作多表的情况,带事务名的写法

 

--启动事务处理

 declare @tranCount int --控制事务嵌套

 set @tranCount=@@trancount  

 if @tranCount=0

   begin tran tran_Add --tran_Add为事务名,随便取

 else

    save tran tran_Add  --保存事务点

 

 --定义反回值

 declare @return int

 set @return=1 --初始化反回值,1为成功

 

 --添加A

 insert into A(a,b,c) values('aa','bb','cc')

  if(@@error<>0)

   begin

    set @return=2 --添加A表错误返回

    goto  err_lab --跳到错误点回滚

   end

 

 --添加B

  insert into B(a,b,c) values('aa','bb','cc')

  if(@@error<>0)

   begin

    set @return=3 --添加B表错误返回

    goto  err_lab --跳到错误点回滚

   end

 

 --==事务处理==

 if(@tranCount=0)--如果没有错提交事务

   begin

    commit tran tran_Add

    goto return_lab

   end

 

  err_lab:

    rollback tran tran_Add

 

  return_lab:

    return @return  --反回

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有