当前位置: 代码迷 >> Sql Server >> 一个事务的有关问题
  详细解决方案

一个事务的有关问题

热度:8   发布时间:2016-04-27 17:00:00.0
一个事务的问题
begin   tran
...
if(a> 1)
begin  
      if(b> 1)
          raiserror( "b不能大于1 ",18,18)
end
if(a <1)
begin
      if(c> 1)
          raiserror( "b不能大于1 ",18,18)
end

..具体操作

我想在上面那里,任意有raiserror发生就不执行下面的具体操作,该怎么处理
我在这样写但不行


if(@@error=0)
commit   tran
else  
rollback   tran

但是这样写就算上面出现了raiserror,下面仍然照样执行

------解决方案--------------------
呵呵,加return
------解决方案--------------------
定义一个变量,在执行前给它赋一个值,如果出错,则把它改成另一个值,这样执行结束后去判断它就可以了
------解决方案--------------------
写成存储过程 :

create proc usp_2
as
begin tran
select * into tttt from ttttttttttttttttt
if @@error <> 0
begin
rollback tran
return
end
select * into tt111 from t

-- rollback tran
if @@error <> 0
begin
rollback tran
return
end
commit tran
  相关解决方案