zoukankan      html  css  js  c++  java
  • 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
    
    
  • 相关阅读:
    Node 核心模块HTTP模块
    Node 的 模块 及fs 模块的使用
    Node 简介和环境安装
    RBAC权限管理模型:基本模型及角色模型解析及举例
    JS中Ajax的同步和异步
    tp5.1 获取json对象的json内容
    JavaScript 判断对象中是否有某属性
    php 函数使用可变数量的参数
    ThinkPHP5.1关于查询器查询条件为[NOT] NULL时的写法
    js中const,var,let区别
  • 原文地址:https://www.cnblogs.com/Alex-Mercer/p/12396244.html
Copyright © 2011-2022 走看看