SQL Server 2008触发器错误删除

时间:2012-10-22 07:02:07

标签: 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

执行此触发器时,它会提供错误输出

  

Msg 50000,Level 16,State 1,Procedure ITEM_UOM_DELETE,Line 11
  单位正在使用无法删除
  消息3609,级别16,状态1,行1   交易在触发器中结束。批次已中止。

我只想要定义的错误

  

单位正在使用无法删除

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

1 个答案:

答案 0 :(得分: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
相关问题