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


    摘自 https://www.cnblogs.com/caoyinglai/p/3624529.html


     
  • 相关阅读:
    源代码的下载和编译
    Git使用入门
    搭建Android开发环境
    安卓系统移植与驱动开发概述
    第十章
    第九章
    第八章
    第七章读书笔记
    第六章读书笔记
    第五章读书笔记
  • 原文地址:https://www.cnblogs.com/xinruyi/p/11079945.html
Copyright © 2011-2022 走看看