トリガーについての混乱:「L」ライブラリーと「N」ノーマルの2種類のレコードがあります。 'N'が更新または挿入されると、対応する 'L'を更新する必要があります。 'L'レコードの更新は更新しないでください。 このコードは更新を成功させるものではありません。どうして?Microsoft SQL 2005のシンプルなトリガー方法:何も更新しないトリガーをコード化しましたか?
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
ワウ。私は完全にそれを逃した。ありがとう –