SQL Server 的事务处理的两种格式

一种是用TRY...CATCH语句,例:

---这仅仅是实例
create procedure [dbo].[MyTryTran] --创建存储过程
--
@toID int, --接收转账的账户
--
@fromID int , --转出自己的账户
--
@momeys money --转账的金额
as
begin transaction
BEGIN TRY
     select 1/0
     insert into t_Sex (FID,FSex) values (3,'na')
commit transaction
END TRY
BEGIN CATCH
begin
rollback transaction
end
END CATCH

第二种是捕捉error错误

create procedure [dbo].[MyTran] --创建存储过程,定义几个变量

--@toID int,    --接收转账的账户

--@fromID int ,  --转出自己的账户

--@momeys money --转账的金额

as 

begin transaction

	declare @errorSum int    --定义变量,用于累计事务执行过程中的错误

	set @errorSum=0

      select 1/0

	set @errorSum=@errorSum+@@error --累计是否有错误



	insert into t_Sex (FID,FSex) values ('3','n')

	set @errorSum=@errorSum+@@error    --累计是否有错误

if @errorSum>0

    begin        

        rollback transaction

    end

else

    begin        

        commit transaction

    end

有一种错误的方式,请看:

 

alter procedure [dbo].[MyErrorTran] 

as 

begin transaction	

	select 1/0

	insert into t_Sex (FID,FSex) values ('3','n')

	commit transaction

if @@error>0            

	rollback transaction

--事实上不管用,因为@@error只对上一条语句管用,所以在本例中尽管发生了错误,但还是不会回滚

 

 

 

你可能感兴趣的:(SQL Server)