首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

一个事务的有关问题

2012-01-28 
一个事务的问题begintran...if(a 1)beginif(b 1)raiserror( b不能大于1 ,18,18)endif(a 1)beginif(c

一个事务的问题
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

热点排行