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
  • 相关阅读:
    junit spring
    DFU协议介绍
    USB枚举过程
    触摸板单点描述符
    Linux下使用codeblocks交叉编译ARM-LINUX-GCC程序
    树莓派 原理图 摄像头接口定义
    usb描述符详细讲解
    常用的算法思想
    STM32f407 DCMI方式驱动 OV2640
    linux echo命令-转
  • 原文地址:https://www.cnblogs.com/caoyinglai/p/3624529.html
Copyright © 2011-2022 走看看