Verwirrt über Trigger: Ich habe zwei Arten von Datensätzen, "L" -Bibliothek und "N" normal. Wenn ein 'N' aktualisiert oder eingefügt wird, muss ich das entsprechende 'L' aktualisieren. Aktualisierungen von 'L'-Datensätzen sollten sich nicht selbst aktualisieren. Dieser Code lässt eine Aktualisierung nicht erfolgreich sein. Warum?Microsoft SQL 2005 Simple Trigger Gewusst wie: Codiert einen Trigger, der nichts aktualisiert?
ALTER trigger updateProductLibrary
on Product
after update as
BEGIN
-- either deleted (old) or inserted (new)
declare @counter int, @insertedType char(1)
set @insertedType = 'Z'
select @insertedType = i.type
from inserted i
if(@insertedType = 'N')
begin
select @counter = count(*)
from product p join inserted i on
p.sku = i.sku and
p.type = 'L' -- for library
if(@counter > 0) -- update
BEGIN
update p set name = i.name
from product p join inserted i on
p.sku = i.sku and
p.type = 'L'
END
ELSE -- insert
BEGIN
insert into product (sku, name, type)
select i.sku, i.name, 'L'
from inserted i
END
END
END
Wow. Das habe ich komplett vermisst. Vielen Dank –