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