• 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只对上一条语句管用,所以在本例中尽管发生了错误,但还是不会回滚

     
     
  • 相关阅读:
    python中装饰器
    python中函数后面的小括号的作用
    python中闭包
    python中LEGB原则
    python中不能在外层函数以外调用内层函数
    “咏刚的家”全新改版
    四个半月——我离 Google 有多远?
    关于翻译的两篇好文章
    崔健,又见崔健
    第一天——适逢惊蛰
  • 原文地址:https://www.cnblogs.com/eyye/p/2211258.html
Copyright © 2020-2023  润新知