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

转载于:https://www.cnblogs.com/starts/p/5100627.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值