事务

多庆幸,你是我领略万物后,仅存的心动。 --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
posted @ 2024-06-30 22:25  小脑虎爱学习  阅读(27)  评论(0)    收藏  举报