SQL Server 2008 触发器错误删除
Posted
技术标签:
【中文标题】SQL Server 2008 触发器错误删除【英文标题】:SQL Server 2008 trigger error remove 【发布时间】:2012-10-22 07:02:07 【问题描述】:我在 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 行 事务在触发器中结束。该批次已中止。
我只想要定义的错误
单位正在使用中无法删除
如何删除错误“事务在触发器中结束。批次已中止。 ?
【问题讨论】:
我已经通过删除 ROLLBACK TRANSACTION 来做到这一点,感谢您的回答 【参考方案1】: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
【讨论】:
以上是关于SQL Server 2008 触发器错误删除的主要内容,如果未能解决你的问题,请参考以下文章
在 SQL Server 2008 R2 中为每个表创建创建触发器