zoukankan      html  css  js  c++  java
  • SQL事务回滚

    BEGIN TRAN标记事务开始
    
    COMMIT TRAN 提交事务
    
    一般把DML语句(select ,delete,update,insert语句)放在BEGIN TRAN...COMMIT TRAN 之间作为一个事务处理
    
    也就是那些语句执行过程中如果遇到错误,无论哪句遇到错误,所有语句都会回滚到BEGIN TRAN之前的状态。
    
    联机帮助:当 SET XACT_ABORT 为 ON 时,如果执行 Transact-SQL 语句产生运行时错误,则整个事务将终止并回滚。 当 SET XACT_ABORT 为 OFF 时,有时只回滚产生错误的 Transact-SQL 语句,而事务将继续进行处理。如果错误很严重,那么即使 SET XACT_ABORT 为 OFF,也可能回滚整个事务。
    
    1、回滚语句1:
    
    SET XACT_ABORT OFF
    
    BEGIN TRAN
    
         INSERT INTO score   VALUES (101,90)
    
         INSERT INTO score VALUES (102,78)
    
            INSERT INTO score VALUES (107,76) /**//* Foreign Key Error */
    
         INSERT INTO score VALUES (103,81)
    
         INSERT INTO score VALUES (104,65)
    
    COMMIT TRAN
    
    go
    
          结果1:只回滚错误行,语句还继续执行。
    
    --select * from score
    
    101     90
    
    102     78
    
    103     81
    
    104     65
    
    2、回滚语句2:
    
    SET XACT_ABORT on
    
    BEGIN TRAN
    
         INSERT INTO score   VALUES (101,90)
    
         INSERT INTO score VALUES (102,78)
    
            INSERT INTO score VALUES (107,76) /**//* Foreign Key Error */
    
         INSERT INTO score VALUES (103,81)
    
         INSERT INTO score VALUES (104,65)
    
    COMMIT TRAN
    
    go
    
       结果2:事务终止并全部回滚,结果为空。
    
    --select * from score
    
    3、回滚语句3:
    
    事务在错误行终止,错误行回滚,错误行之前的不回滚
    
    SET XACT_ABORT on
    
    BEGIN
    
    INSERT INTO score   VALUES (101,90)
    
         INSERT INTO score VALUES (102,78)
    
            INSERT INTO score VALUES (107,76) /**//* Foreign Key Error */
    
         INSERT INTO score VALUES (103,81)
    
         INSERT INTO score VALUES (104,65)
    
    END
    
    go
    
          结果3:出现这种是因为系统把每个insert语句都看成是单独的事务,所以错误行以前的是不回滚的。
    
    --select * from score
    
    101     90
    
    102     78
  • 相关阅读:
    Chrome禁用缓存
    国内阿里Maven仓库镜像Maven配置文件Maven仓库速度快
    spring boot 之热部署
    Spring Boot的Maven插件Spring Boot Maven plugin详解
    在Extjs 的 TabPanel在 title标题栏上加按扭button
    Entity Framework 基于Oracle的code first 问题汇总
    面向对象设计原则
    Asp.Net MVC 缓存设计
    Asp.Net MVC 身份认证
    Asp.Net MVC 请求原理分析
  • 原文地址:https://www.cnblogs.com/caoyinglai/p/3624529.html
Copyright © 2011-2022 走看看