接ACID转账事务的代码
CREATE PROCEDURE sp_transfer_money3
@out_cardno char(20),
@in_cardno char(20),
@money numeric(18,2)
as
BEGIN
DECLARE @remain numeric(18,2)
select @remain=money from account where cardno=@out_cardno
if @remain>@money
BEGIN
BEGIN TRANSACTION T1
update account set money = money-@money where cardno=@out_cardno
update account set money = money+@money where cardno=@in_cardno PRINT '转账成功.'
if @remain>@money
begin
rollback transaction
end
COMMIT TRANSACTION T1
END
ELSE
BEGIN
PRINT '余额不足.'
END
END
EXEC sp_transfer_money3 '01','02',100.0