0

更新された列が特定の値と等しい場合にのみ実行されるトリガーを作成しようとしています。

基本的に、列名「Status」を値「Paid」に更新した場合にのみ、トリガーを実行します。

すなわち

if (Update(Status) AND  inserted.Status = 'Paid')
begin
end

現時点では、「マルチパート識別子 "inserted.Status" をバインドできませんでした」というエラーが表示されます。

前もって感謝します!

4

1 に答える 1

1

2 つのステップに分割する必要があります。1. ステータスが更新された場合にのみ反応します。

if update(status)
begin
    -- Do the stuff to the Paid elements in inserted
    select * from inserted as i where i.status = 'Paid'

end

ステータスは、支払い済みから支払い済みに更新されることもあり、それに反応したくない場合があることを覚えておいてください。したがって、次のようなことができます:

select * from
inserted as i
inner join deleted as d on i.id = d.id
where i.status <> d.status and i.status = 'Paid'

現在、結果には、Paid に更新されていて、まだ Paid に等しくなっていなかった行のみが含まれます。

于 2013-03-26T09:52:38.353 に答える