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
本文详细介绍了SQLServer中事务和存储过程的实际应用。通过具体案例,如账户间转账和图书归还流程,展示了如何使用事务确保数据操作的一致性和原子性,以及如何创建存储过程来封装复杂的数据处理逻辑。
130

被折叠的 条评论
为什么被折叠?



