zoukankan      html  css  js  c++  java
  • SQL Server重温——事务

    为什么使用事务
      当对多个表进行更新的时候,某条执行失败。为了保持数据的完整性,需要使用事务回滚。
     
    显示设置事务

      begin try
        begin transaction
        insert into shiwu (asd) values ('aasdasda');
        commit transaction
      end try
      
      begin catch
        select ERROR_NUMBER() as errornumber
        rollback transaction
      end catch

     
    隐式设置事务

    set implicit_transactions on;        -- 启动隐式事务
      go
      
      begin try
        insert into shiwu (asd) values ('aasdasda');
        insert into shiwu (asd) values ('aasdasda');
        commit transaction;
      end try
      
      begin catch
        select ERROR_NUMBER() as errornumber
        rollback transaction;            --回滚事务
      end catch
      
      set implicit_transactions off;    --关闭隐式事务
      go

    显示事务以下语句不能使用,隐式事务可以

      alter database;
      backup;
      create database;
      drop database;
      reconfigure;
      restore;
      update statistics;

    显示事务可以嵌套使用

    --创建存储过程
      create procedure qiantaoProc 
      @asd nchar(10)
      as
      begin
        begin try
            begin transaction innerTrans
            save transaction savepoint        --创建事务保存点
            insert into shiwu (asd) values (@asd);
            commit transaction innerTrans
        end try
        
        begin catch
            rollback transaction savepoint    --回滚到保存点
            commit transaction innerTrans
        end catch
      end
      go
      
      begin transaction outrans
        exec qiantaoProc 'asdasd';
      rollback transaction outrans

    事务嵌套,回滚外层事务时,如果嵌套内的事务已经回滚过则会有异常。此时需要使用事务保存点。如上代码。

  • 相关阅读:
    mybatis
    spring mvc
    Spring Boot2
    Spring AOP
    Spring Boot1
    Spring IOC
    Multiple_LinearRegression_Test2
    Multiple_LinearRegression_Test
    Simple_LinearRegression_Test
    写决策树时遇到的坑
  • 原文地址:https://www.cnblogs.com/chuifeng/p/2618246.html
Copyright © 2011-2022 走看看