• MSSQL 事务


    数据说明

    • SET XACT_ABORT ON是设置事务回滚的!
    • 当为ON时,如果你存储中的某个地方出了问题,整个事务中的语句都会回滚
    • 为OFF时,只回滚错误的地方

    事务的3个例子

    1.goto 去返回事务,不受 SET XACT_ABORT off 影响

    begin tran  --标记事务的开始
    begin 
        insert into Base_User (Code,Name,Password) values('1','1','1')
        if @@Rowcount<1
        goto Error1
    
    	insert into Base_User (Code,Name) values('1','1')
    	if @@Rowcount<1
        goto Error1
    
        insert into Base_User (Code) values('1')
        if @@ROWCOUNT<1
        goto Error1
    end
    commit tran   --提交事务
    print '正确执行'  --正确执行
    return
     
    Error1:
    rollback
    print '错误'  --更新申请状态失败
    return
    
    

    2.判断是否有错误,不受 SET XACT_ABORT off 影响

    begin tran --开始执行事务 
     --语句一
    
    		insert into Base_User (Code,Name,Password) values('1','1','1')
    		insert into Base_User (Code,Name) values('1','1')
    		insert into Base_User (Code) values('1')
     
    
    if @@error<>0 --判断如果语句有任何一条出现错误
    	begin rollback tran --开始执行事务的回滚 
    	print 0
    	end
    else --如何都执行成功
    	begin
    		commit tran --执行这个事务的操作
    		print 1
    	end
    
    

    3.直接提交,受到SET XACT_ABORT off,会只回滚错误的地方,之前的数据不会回滚。导致数据库会有第一条数据

    SET XACT_ABORT off
    
    begin tran 
    begin
        insert into Base_User (Code,Name,Password) values('1','1','1')
    	insert into Base_User (Code,Name) values('1','1')
        insert into Base_User (Code) values('1')
    
    end
    commit tran
    
    SET XACT_ABORT on
    

    4.增加事务,如果其中一条出错,则所有语句全部回滚。这个才是重点

    SET XACT_ABORT on
    
    begin tran 
    begin
        insert into Base_User (Code,Name,Password) values('1','1','1')
        insert into Base_User (Code,Name) values('1','1')
        insert into Base_User (Code) values('1')
    
    end
    commit tran
    
    SET XACT_ABORT off
    
    
  • 相关阅读:
    python之字典操作
    python之元组操作
    初始超算
    后缀自动机
    博弈
    曼哈顿最小生成树
    莫队算法
    主席树
    [HNOI2014]世界树
    [SDOI2011]消耗战
  • 原文地址:https://www.cnblogs.com/Alex-Mercer/p/12396244.html
Copyright © 2020-2023  润新知