事务
多庆幸,你是我领略万物后,仅存的心动。 --zhu
事务
人员信息如下:(第二列身份证号,第三列银行卡号)
--刘备 420107198905064345 6225125478544587
--关羽 420107198905064346 6225125478544588
--张飞 420107198905064347 6225125478544589
(1)假设刘备取款6000,(添加check约束,设置账户余额必须>=0),要求:使用事务实现,修改余额和添加取款记录两步操作使用事务
begin transaction
declare @MyError int = 0
update BankCard set CardMoney = CardMoney-6000 where CardNo ='6225125478544587'
set @MyError = @MyError +@@ERROR
insert into CardExchange(CardNo,MoneyInBank,MoneyOutBank,ExchangeTime)
values('6225125478544587',0,6000,GETDATE())
set @MyError = @MyError +@@ERROR
if @MyError =0
begin
commit transaction
print '取款成功'
end
else
begin
rollBank transaction
print '余额不足'
end
(2)假设刘备向张飞转账1000元,(添加check约束,设置账户余额必须>=0);分析步骤有三步(1)张飞添加1000元,(2)刘备扣除1000元(3)生成转账记录;使用事务解决问题
begin transaction
declare @Error int = 0
update BankCard set CardMoney = CardMoney-6000 where CardNo ='6225125478544587'
update BankCard set CardMoney = CardMoney+6000 where CardNo ='6225125478544589'
insert into CardExchange(CardNo,MoneyInBank,MoneyOutBank,ExchangeTime)
values('6225125478544587','6225125478544589',6000,GETDATE())
set @MyError = @MyError +@@ERROR
if @MyError =0
begin
commit transaction
print '转账成功'
end
else
begin
rollBank transaction
print '转账失败'
end

浙公网安备 33010602011771号