• SQL Server 的事务处理的两种格式


    一种是用TRY...CATCH语句,例:

    ---这仅仅是实例
    create procedure [dbo].[MyTryTran] --创建存储过程
    --
    @toID int, --接收转账的账户
    --
    @fromID int , --转出自己的账户
    --
    @momeys money --转账的金额
    as
    begin transaction
    BEGIN TRY
         select 1/0
         insert into t_Sex (FID,FSex) values (3,'na')
    commit transaction
    END TRY
    BEGIN CATCH
    begin
    rollback transaction
    end
    END CATCH

    第二种是捕捉error错误

    create procedure [dbo].[MyTran] --创建存储过程,定义几个变量
    --@toID int,    --接收转账的账户
    --@fromID int ,  --转出自己的账户
    --@momeys money --转账的金额
    as 
    begin transaction
    	declare @errorSum int    --定义变量,用于累计事务执行过程中的错误
    	set @errorSum=0
          select 1/0
    	set @errorSum=@errorSum+@@error --累计是否有错误
    
    	insert into t_Sex (FID,FSex) values ('3','n')
    	set @errorSum=@errorSum+@@error    --累计是否有错误
    if @errorSum>0
        begin        
            rollback transaction
        end
    else
        begin        
            commit transaction
        end
    

    有一种错误的方式,请看:

    alter procedure [dbo].[MyErrorTran] 
    as 
    begin transaction	
    	select 1/0
    	insert into t_Sex (FID,FSex) values ('3','n')
    	commit transaction
    if @@error>0            
    	rollback transaction
    
    --事实上不管用,因为@@error只对上一条语句管用,所以在本例中尽管发生了错误,但还是不会回滚

     
     
  • 相关阅读:
    分享Kali Linux 2016.2第41周镜像虚拟机
    Visual Studio工具栏中无法选择调试设备
    Xamarin.iOS编译出错
    Xamarin基础命名空间Microsoft.SqlServer.Server
    编译包含Google Play服务App的SDK版本问题
    解决Fiddler无法抓到手机的会话包
    Xamarin.Android编译CPU类型选择方式
    Delphi iOS
    Delphi Android
    CRC16-循环冗余校验
  • 原文地址:https://www.cnblogs.com/eyye/p/2211258.html
Copyright © 2020-2023  润新知