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

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

  • 相关阅读:
    centos7使用163 yum源
    Package has no installation candidate解决方法
    HTML 5 canvas相关
    git rebase 使用总结
    Redis不是只有get set那么简单
    k8s---pod常用操作
    Navigator.sendBeacon 无阻塞发送统计数据
    如何在页面关闭或跳转时优雅的发送Ajax请求
    mysql的触发器、视图、索引,受益匪浅
    杂集:centos7中利用logrotate工具切割tomcat日志
  • 原文地址:https://www.cnblogs.com/chuifeng/p/2618246.html
Copyright © 2011-2022 走看看