您的位置:首页 > 数据库 > SQL语言 > 正文

存储过程中使用事务Transaction

更多 时间:2014-8-9 类别:数据库 浏览量:671

存储过程中使用事务Transaction

存储过程中使用事务Transaction

一、什么是事务(Transaction)

1、事务是恢复和并发控制的基本单位。 是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性。

2、事务通常是以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。

二、Begin Trans、Rollback Trans、Commit Trans方法


1、用于事务处理的方法。BeginTrans用于开始一个事物;RollbackTrans用于回滚事务;CommitTrans用于提交所有的事务处理结果,即确认事务的处理。


2、事务处理可以将一组操作视为一个整体,只有全部语句都成功执行后,事务处理才算成功;若其中有一个语句执行失败,则整个处理就算失败,并恢复到处里前的状态。


3、BeginTrans和CommitTrans用于标记事务的开始和结束,在这两个之间的语句,就是作为事务处理的语句。判断事务处理是否成功,可通过连接对象的Error集合来实现,若Error集合的成员个数不为0,则说明有错误发生,事务处理失败。Error集合中的每一个Error对象,代表一个错误信息。 

三、存储过程中使用事务Transaction实例

  •  
  • SQL 代码   复制
  • 
     Create PROCEDURE [dbo].[tt2]
    
    As
    
    Begin
    
        Begin Transaction
    
            Update dbo.storeA Set Aid = 7 Where Aname ='N73'    
    
           Update dbo.storeA Set Aid = 9 Where Aname ='N97'        
    
           Insert Into dbo.storeA(Aid) Values('sdfs')       --此语句将出错,LockTypeID为Int类型 
    
           Update dbo.storeA Set Aid = 8 Where Aname ='N95'  
    
        Commit Transaction
    
        If(@@ERROR <> 0)
    
            Rollback Transaction        
    
    End
    
    		
  • SQL 代码   复制
  • 
     Declare @id int
        BEGIN TRANSACTION
       
           Insert into xxxxxTable(f1,f2)values(@a,@b)
           Select @id=@@identity
            Insert into abcTable(ff1,ff2,ff3)values(@c,@id,@dd)       
    
            IF @@error <> 0  --发生错误
            BEGIN
                ROLLBACK TRANSACTION
                RETURN 0
            END
            ELSE
            BEGIN
                COMMIT TRANSACTION
                RETURN 1    --执行成功
           END
    
    		
  • 您可能感兴趣