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

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

  • 相关阅读:
    算法7-9:有向图搜索算法
    STM32W108无线传感器网络节点自组织与移动智能体导航技术
    no matching provisioning profiles found
    数组处理函数
    字符串相关函数整理
    [Other]来做一个微信打印机吧 -- 微信打印的设计思路參考
    [WF4.0 实战] 事件驱动应用
    OpenCV——RGB三通道分离
    泛型的使用
    JDBC使用步骤
  • 原文地址:https://www.cnblogs.com/chuifeng/p/2618246.html
Copyright © 2011-2022 走看看