2012-10-22 32 views
0

我创建了一个触发器在SQL Server 2008中SQL Server 2008的触发错误删除

CREATE TRIGGER [dbo].[ITEM_UOM_DELETE] ON 
    [dbo].[ITEM_UOM] INSTEAD OF DELETE 
    AS 
     declare @rowc int 
     set @rowc = (select count(*) from stock, deleted where 
     item = deleted.itemcode and uom = DELETED.MAINUNIT AND DOCTYPE <> 'OP') 
     if @rowc > 0 
     begin 
      raiserror('Unit is in Use Cannot Delete', 16, 1) 
      rollback transaction 
     end 

这个触发的执行它给人的错误输出

消息50000,级别16,状态1,步骤ITEM_UOM_DELETE,第11行
单位正在使用中无法删除
消息3609,级别16,状态1,行1
事务在触发器中结束。该批次已被中止。

我想定义的错误只

机正在使用中无法删除

如何删除错误“在触发器中结束交易。该批次已被中止。“ ?

+0

我已经通过的答案删除 ROLLBACK TRANSACTION 由于做到了这一点 –

回答

0
CREATE TRIGGER [dbo].[ITEM_UOM_DELETE] ON 
[dbo].[ITEM_UOM] INSTEAD OF DELETE 
AS 
BEGIN 

declare @rowc int 
select @rowc=count(*) from stock 

if @rowc <= 0 
begin 
deleted uom from [ITEM_UOM] uom inner join deleted on uom.item = deleted.itemcode 
and uom.MAINUNIT = DELETED.MAINUNIT where uom.DOCTYPE <> 'OP' 
end 
else 
begin 
raiserror('Unit is in Use Cannot Delete', 16, 1) 
end 

end