sql中的事物

来源:互联网 发布:拼多多提现网络繁忙 编辑:程序博客网 时间:2024/05/01 23:55

====转帐问题
 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---手动回滚

原创粉丝点击