sql中的Tran和C#中的TransactionScope介绍

sql 中的Tran 俩种写法

第一种写法 try catch:

Begin TRY
    Begin Tran transaction
    
        DECLARE @ServiceOrderId INT 
        SET @ServiceOrderId=73342
        DECLARE @ErrorCount  INT 
        SET @ErrorCount = 0
        --调整积分通订单状态 支付完成
        UPDATE dbo.ServiceOrderNew
        SET OrderStatus = 2,UpdateDate = GETDATE()

        WHERE  ServiceOrderID = @ServiceOrderId


        --调整订单详细
        UPDATE dbo.ServiceOrderNewDetail
        SET DetailStatus = 2
        WHERE ServiceOrderID = @ServiceOrderId 

    Commit Tran transaction
    END TRY
        BEGIN CATCH
    ROLLBACK Tran transaction
END CATCH

第二种写法 用错误积累:

DECLARE @ServiceOrderId INT 
SET @ServiceOrderId=73342
 
BEGIN TRAN  A
        DECLARE @ErrorCount  INT 
        SET @ErrorCount = 0
        --调整积分通订单状态 支付完成
        UPDATE dbo.ServiceOrderNew
        SET OrderStatus = 2,UpdateDate = GETDATE()
     
        WHERE  ServiceOrderID = @ServiceOrderId
        
        SET @ErrorCount=@ErrorCount+@@error

        --调整订单详细
        UPDATE dbo.ServiceOrderNewDetail
        SET DetailStatus = 2
        WHERE ServiceOrderID = @ServiceOrderId
       
        
        SET @ErrorCount=@ErrorCount+@@error
        --付款状态
        UPDATE dbo.ScorePayApply
        SET ApplyStatus = 2
        WHERE  ScorePayApplyID = (SELECT TOP 1 ScorePayApplyID FROM ServiceOrderNewDetail WHERE ServiceOrderID = @ServiceOrderId)
        
         SET @ErrorCount=@ErrorCount+@@error
       
         SET @ErrorCount=@ErrorCount+@@error
         
  IF @ErrorCount=0 
      BEGIN   
        COMMIT TRAN  A
      END 
  ELSE   
      BEGIN   
        ROLLBACK TRAN  A
      END 

 

第二 TransactionScope用法

 using (TransactionScope tran = new TransactionScope())
        {
            try
            {
                ServiceItemDataAccess.ServicesConfirmPayment(serviceOrderId, remark, serviceId);
                //提交事务
                tran.Complete();
            }
            catch (Exception ex)
            {
                return ex.ToString();
            }
            finally
            {
                tran.Dispose();
            }
        }

TransactionScope 是一个轻量级的事物,在using中,若程序报错,则自动回滚。tran.Complete();是指程序成功,提交。 tran.Dispose(); 释放和销毁。

欢迎大家提出意见,尤其是在介绍时的意见,本人逻辑思维不是很严谨,所以导致要么叙述啰嗦,要么 说明不是很清楚

 

转载于:https://www.cnblogs.com/q101301/p/4646146.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值