我在SqlServer的开始与下面的触发器2000更新表中删除
ALTER TRIGGER DeleteTrigger
ON [dbo].[WarrantyClaimsLineItems]
FOR DELETE
AS
begin
declare @wa int
SET @wa = (SELECT warrantyAuthNo from DELETED)
update dbo.warrantyclaimsauth
set isused = 0
WHERE warrantyClaimsAuth.warrantyauthno = @wa
end
基本上,只要行项目从表中删除我需要更新已分配的warrantyauth.isUsed将该订单项恢复为false。
它适用于删除一个行项目但删除多个行项目时出现以下错误。
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
我明白为什么,触发器期望只有一条记录被删除。 所以我需要修改它来处理多行删除。
我做了一些研究,并修改了我的触发是这个
....
AFTER DELETE
AS
begin
update dbo.warrantyclaimsauth set isUsed = 0
from dbo.warrantyclaimsauth a
inner join deleted d on a.warrantyAuthNo = a.warrantyAuthNo
end
然而,这在isUsed领域更新的warrantyclaimsauth每一行与0。 任何人都可以帮助我做我做错了什么? 谢谢!
噢,我的我是这样一个白痴,我是疯了,不断俯视。非常抱歉,愚蠢的问题! – twaldron 2012-01-09 22:40:28