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