sql中的事物

====转帐问题
 create table Bank
 (
 Cid char(4) primary key,
 balance money 
 )
 alter table Bank
 add constraint CH_blance check(balance>=10)
 
 insert into Bank values('0001',1000)
 insert into Bank values('0002',10)
 
 ---假设要从0001账户转1000元到0002账户
 update Bank set balance=balance-1000 where Cid='0001'
 update Bank set balance=balance+1000 where Cid='0002'
 =======事物就是把一系列操作作为一件事处理,要么都完成,要么都不完成!
 begin tran---打开事物
 begin try
 declare @errorSum int=0
 update Bank set balance=balance-1000 where Cid='0001'
 set @errorSum=@errorSum+@@error
 update Bank set balance=balance+1000 where Cid='0002'
 set @errorSum=@errorSum+@@error
 print '提交'
 end try
 begin catch
  rollback tran
  print '回滚'
 end catch

方法2:会报错,但不影响运行
{
 if @errorSum=0
  begin
   commit tran---提交事物
  end
 else
  befin
   rollback tran--回滚事物:当不能提交时发生
  end
}

 begin tran--打开事物
 insert into Bank valuess('0004',341434134)
 rollback---手动回滚

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值