zoukankan      html  css  js  c++  java
  • SQL Server 事务语法

    1.事物机制

    四个属性:原子性Atomicity,一致性Consistency,隔离性Isolation,持久性Durability ,即ACID特性。

    2. 事务必须具备的特性: 

       1) 原子性:  Atomicity  :事务是一个完整的操作, 个元素是不可再分的。事务中所以元素必须作为一个整体提交或回滚。如果十五中任何元素失败,则整个事务将失败。

       2)一致性: Consistency: 当事务完成时,数据必须处于一致状态。

       3)隔离性: Lsolation: 对数据进行修改的所有并发事务是彼此隔离的,它不以任何方式依赖或影响其他事务。

       4)持久性: 不管系统是否发生了故障,事务处理的结果都是永久性的。

    3. 如何执行事务:

        1)开始事务:  begin  transaction

        2)  提交事务: commit transaction

        3)  回滚事务: rollback transaction(数据处理过程中出错,回滚到没有处理之前的数据状态,或回滚到事务内部的保存点。)

    4. 事务分类

        1) 显示事务: 用begin transaction 明确指定事务的开始

        2) 隐式事务: 通过设置 set implicit_transactions on 语句,将隐式事务模式设置为打开。当以隐式事务模式操作时,SQlServer将在提交或回滚事务后自动启动新事务。不需要描述每个事务的开始,只要提交或回滚每个事务即可。

        3) 自动提交事务: 这是SQL Server的默认模式,它将每条单独的T-SQL语句视为一个事务。如果成功执行,则自动提交。如果错误,则自动回滚。

    5. 示例

       XXXXXX  业务逻辑

      begin transaction  --开始事务

       declare @error  int  --定义变量,累积事务执行过程中的错误

       set @error = 0

       ----- 执行语句1

        set  @error = @error + @@error  --累积错误

       ---- 执行语句2

        set  @error = @error + @@error  --累积错误

       ------

       

       --判断

       if  @error <> 0  --有误

         begin

        print  '回滚事务'

               rollback  transaction

         end

       else  

         begin

        print  '提交事务'

               commit transaction

         end

    ========================================

    begin transaction --开启一个事务 

      --其后的所有代码都是一个整体,表示可以使用一定语句限制这些代码是否起作用
      begin try
        --sql 语句

        commit;--表示事务提交

      end try

      begin catch
        rollback;--表示回滚
      end catch

    go

    示例

      begin transaction
         declare @myError int;
         set @myError = 0;
          update bank set balance=balance - 1000 where cid='0001';
          set @myError = @myError + @@ERROR;
          update bank set balance=balance + 1000 where cid='0002';
          set @myError = @myError + @@ERROR;
      if(@myError > 0)
      begin
         rollback
     end
     else
     begin
         commit
     end;
     go
  • 相关阅读:
    曹工说Spring Boot源码(18)-- Spring AOP源码分析三部曲,终于快讲完了 (aop:config完整解析【下】)
    曹工说Spring Boot源码(17)-- Spring从xml文件里到底得到了什么(aop:config完整解析【中】)
    曹工说Spring Boot源码(16)-- Spring从xml文件里到底得到了什么(aop:config完整解析【上】)
    曹工说Spring Boot源码(15)-- Spring从xml文件里到底得到了什么(context:load-time-weaver 完整解析)
    期货
    手机像素密度的计算公式
    线性代数第一讲 行列式01
    matlab找出某个元素的位置序号
    《树先生》影评
    当你的才华还不足以支撑起你的野心时,你就该静下心来学习
  • 原文地址:https://www.cnblogs.com/starts/p/5100627.html
Copyright © 2011-2022 走看看