SQL Server手写数据库事务、存储过程脚本
1.事务
--卡号为115的账户给卡号为116的账户转账100元
declare @errorSum int = 0
Begin Transaction
Begin
Update User set BalanceCount = BalanceCount - 100 where UserId = 115
@errorSum += @@Error
Update User set BalanceCount = BalanceCount + 100 where UserId = 116
@errorSum += @@Error
if(@errorSum > 0)
RollBack Transaction
else
Commit Transaction
End
2.数据存储过程
--还书修改BorrowDetail表(NonReturnCount -= @returnCount 和 ReturnCount += @returnCount)
--在ReturnBook表中添加信息
if exists(select * from sysobjects where name = 'usp_ReturnBook')
drop procedure usp_ReturnBook
go
Create procedure ups_ReturnBook
@BorrowDetailId int,
@returnCount int,
@AdminName_R varchar(20)
as
declare @errorSum = 0
Begin Transaction
Begin
insert into ReturnBook(BorrowDetailId,ReturnCount,AdminName_R)
values(@BorrowDetailId,@ReturnCount,@AdminName_R)
@errorSum += @@Error
update BorrowDetail set NonReturnCount -= @returnCount, ReturnCount += @returnCount
where BorrowDetailId = @BorrowDetailId
@errorSum += @Error
if(@errorSum > 0)
Rollback Transaction
else
Commit Transaction
End
go