Sql事务

完整代码如下:

View Code
--创建表
create table t_money
(
userid varchar(20),
username varchar(30),
[money] int
)
go
--插入数据
insert into t_money values('1111','puter',1000)
insert into t_money values('2222','judy',1000)
go
--创建转账存储过程
create proc proc_updatemoney
@adduserid varchar(30),          --转入的用户
 @subtrationuserid varchar(30),   --转出的用户
 @money int,                      --转出金额
 @errormessage varchar(200) output--输出参数
as
Declare @intErrorCode int    --错误数
set @intErrorCode=0
Declare @courentmondy int    --当前余额
Declare @rownum int          --影响行数
set @rownum=0

begin transaction            --开始事务

select @courentmondy=money from t_money where userid=@subtrationuserid --转出账户当前余额
if(@money>@courentmondy)   --转出金额是否大于余额
begin
select * from dbo.t_money
set @errormessage='当前余额不足!'
set @intErrorCode=1         --记录错误
end
else
begin
update t_money set [money]=[money]+@money where userid=@adduserid
Select @intErrorCode=@intErrorCode+@@Error  --记录错误
Select @rownum=@rownum+@@rowcount           --记录影响行数
update t_money set [money]=[money]-@money where userid=@subtrationuserid  
Select @intErrorCode=@intErrorCode+@@Error   --记录错误
Select @rownum=@rownum+@@rowcount            --记录影响行数
end

if(@intErrorCode=0 and @rownum=2)    --判断是否有错误
begin
commit transaction   --提交事务
select * from dbo.t_money
set @errormessage='操作成功!'
return @rownum
end
else
begin
rollback transaction  --回滚事务
return @rownum
end

示例图:

原文地址:https://www.cnblogs.com/zcttxs/p/2484707.html