数据库实验(六)——转账事务

本文通过创建帐户表并实现转账功能的存储过程,演示了如何使用SQL进行事务处理及存储过程的编写。首先建立了包含四个帐户的数据环境,接着定义了一个转账存储过程,该过程检查帐户余额是否足够,并在确保数据一致性的前提下完成转账操作。
摘要由CSDN通过智能技术生成

转账事务与存储过程

一、实验目的:

1.掌握事务操作

2.掌握存储过程的应用

 

二、实验内容:

1、先建立数据环境(帐户表)

create table 帐户表
(帐户编号 char(4) primary key,
帐户名 char(4),
金额 int)
go

insert 帐户表 values('A','A',19800);
insert 帐户表 values('B','B',5000);
insert 帐户表 values('C','C',2000);
insert 帐户表 values('D','D',9000);
go


 

 

 

2、转账事务与存储过程的编写

 
if exists(select name from sysobjects
             where name = 'zhuanzhang' and type='p')
drop procedure zhuanzhang 
go    

--建立一个带有参数的转账存储过程
-- @zhOUT 转出帐户帐号 
-- @zhIN 转入帐户帐号
--@JinE  金额
create procedure zhuanzhang
@zhOUT varchar(8),@zhIN varchar(8),@JinE int
as
--转账事务
begin transaction
--记录点
save transaction befor_zhuanzhang
--帐户转出 一定金额
declare @xianYou int
select @xianyou=金额 from 帐户表 
where 帐户编号=@zhOUT
if @xianyou<@JinE
begin
 rollback transaction befor_zhuanzhang
    print '金额不足!'
    --return
end
else
begin
 update 帐户表 set 金额=金额-@JinE
 where 帐户编号=@zhOUT
 --帐户转入 一定金额
 update 帐户表 set 金额=金额+@JinE
 where 帐户编号=@zhIN
 if @@Error<>0 or @@rowcount=0
 begin
  rollback transaction befor_zhuanzhang
  print '转账出错错误。'
  --return
 end
 else
 begin
  print '帐户'+@zhOUT+'转出'+convert(varchar(32),@JinE)+'元,到帐户'+@zhIN+'。'
 end;
end
commit transaction 


 

3.测试数据(执行存储过程zhuanzhang)

execute zhuanzhang 'A','B',5000
execute zhuanzhang 'C','D',5000


 写出以上语句依次执行的实验结果。

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值