我写了一个存储过程,大概的意思是如果更新用户的余额失败就回滚事务,不知道写的是否有问题请大家帮忙看下CREATE PROCEDURE T_Users_UserJR_Update
@UserID int,
@Price decimal(18,2)
AS
SET XACT_ABORT ON/*开启事务回滚*/
begin tran Pricetran
UPDATE [T_Users] SET [UserJR]=[UserJR]-@Price WHERE [UserID]=@UserID
commit tran Pricetran不知道写的对不对,正确的或者更完善的写法应该怎么写呢!

解决方案 »

  1.   

    最好是按1楼的处理,更完善的写法,检查一下是否更新成功,更新不成功再rollbackCREATE PROCEDURE T_Users_UserJR_Update
    @UserID int,
    @Price decimal(18,2)
    AS
    SET XACT_ABORT ON/*开启事务回滚*/
    begin tran Pricetran
    UPDATE [T_Users] SET [UserJR]=[UserJR]-@Price WHERE [UserID]=@UserID
    IF @@ERROR <> 0 
    begin
    rollback tran Pricetran
    end
    else
    begin
    commit tran Pricetran
    end