读书人

一个事务的有关问题

发布时间: 2012-01-28 22:06:13 作者: rapoo

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

读书人网 >SQL Server

热点推荐