SQL事务事件查询


从数据库中添加表并添加数据和约束,该查询代码是银行查询业务的事件业务,事件业务解决了全对才执行的原则。

use student

create table Account
(
AccountNumber varchar(20) not null primary key,
AccountName varchar(20) not null,
Balance decimal(18,2) not null check(Balance>=0)
)
--创建数据
insert into
Account values(123456,'祝红涛',499.00)
insert into
Account values(654321,'张浩太',500.00)
select * from Account
--修改数据
alter table Account
with check
add check(Balance>0 and Balance<1000)


go
--利用事务来处理所出现的问题
select * from Account
--声明变量
declare @Err int,@Arr int
declare @outCard varchar(20) --转出账号
declare @inCard varchar(20) --转入账号
declare @money decimal(18,2) --转出金额
--变量赋值
set @outCard='123456'
set @inCard='654321'
set @money=500
begin transaction
--增加金额
update Account
set Balance=Balance+@money --余额=余额+500
where AccountNumber=@inCard --卡号=转入账号  @inCard=500+500=1000 但有约束不允许大于1000所以@intCard余额不变
set @Err=@@ERROR
--减少金额
update Account
set Balance=Balance-@money --余额=余额-500 
where AccountNumber=@outCard --卡号=转出账号 @outCard=499-500=-1 但有约束不允许小于0所以@outCard余额不变
set @Arr=@@ERROR
if @Err=0 and @Arr=0
begin
commit transaction  --提交事务
print '事务提交成功'
end
else
begin
rollback transaction  --事务回滚
print '事务回滚'
end
--查询数据库表内容
select * from Account
  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值