Sql Server 三种事务模式

显式事务
显式事务(Explicit Transaction)是由设计人员明确定义事务的启动与结束的一种事务。
可使用 BEGIN TRANSACTION、COMMIT TRANSACTION、COMMIT WORK、ROLLBACK TRANSACTION、ROLLBACK WORK 等语句来定义显式事务。

 

Create   PROCEDURE  sp_test( @ID   varchar ( 50 ))
AS  
Begin   Tran   -- 事务开始 
Update  Tb  set  CDate = getdate ()  where  TbID = @ID  
if   @@ERROR   > 0   -- 若有错误 
BEGIN  
    
ROLLBACK   TRAN   -- 事务还原 
     Return  
End  
DECLARE   @PID   varchar ( 50 ), @TbQty   int  
DECLARE  cur_1  CURSOR   FOR   SELECT  PID, Qty  FROM  TbDetail  where  TbID = @ID   -- 声明游标数据事务 
OPEN  cur_1  -- 打开游标 
FETCH   NEXT   FROM  cur_1  INTO   @PID , @TbQty   -- 从游标获取两个字段值到变量 
WHILE   @@FETCH_STATUS   =   0   -- 用循环逐项处理 
BEGIN  
    
Update  Ta  set  TaQty = TaQty - @TbQty   where  PID = @PID  
    
FETCH   NEXT   FROM  cur_1  INTO   @PID , @TbQty  
    
if   @@ERROR   > 0  –若有错误 
    
Begin
        
ROLLBACK   TRAN   -- 事务还原 
         CLOSE  cur_1  -- 关闭及释放游标 
         DEALLOCATE  cur_1 
        
BREAK  
    
END  
END  
CLOSE  cur_1 
DEALLOCATE  cur_1 
COMMIT   TRAN   -- 事务提交 

 

 

自动提交事务
这是 SQL Server 的默认模式,所有未特别声明的事务,都被视为自动提交的事务。但
是只以一个操作作为事务范围,如一个 Update 或 Delete 等。当事务完成时,每个单独的
T-SQL 语句都将被提交或因出现错误而还原。

隐式事务
通过 API 函数或 T-SQL 的 SET IMPLICIT_TRANSACTIONS ON 语句将隐式事务模式
设置为打开。下一个语句会自动开始一项新的事务。当该项事务完成时,下一个 T-SQL 语
句会再开始一项新的事务。

SET  IMPLICIT_TRANSACTIONS  ON  
 
INSERT   INTO  Ta (aa,bb)  VALUES  ( ' 11 ' ' 22 '
COMMIT   TRANSACTION  
GO  

 

以上程序表示先使用“SET IMPLICIT_TRANSACTIONS ON”启动隐式事务,然后在
下一行程序创建事务,以 Insert 语句添加一项记录至 Category 数据表,最后再用 COMMIT
TRANSACTION 提交事务。提交之后若还有程序,会再开始新的事务。总之,隐式事务的
意思是由 SQL Server 系统在所有提交、还原之后,自动创建新事务。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值