2014-10-22 66 views
1

我無法完全弄清楚如何使用表觸發器更新最後插入的行。使用表觸發器更新插入的行

我嘗試這樣做:

create TRIGGER [dbo].[t_checkAucEquFields]<br /> 
ON [dbo].[_aucEquUpdateLog] 
AFTER INSERT 
as 
update a set inserted.[Status] = coalesce(pes.id,'22') 
from [_aucEquUpdateLog] a 
left join v_pobEquStatus pes on pes.statusDescr = inserted.[Status] 

我想inserted.Status文 - 恩是「有現貨」與整數pes.id.被替換如果連接無法進行,我想它默認爲價值22

嘗試上述查詢時,我得到這個錯誤:

Msg 4104, Level 16, State 1, Procedure t_checkAucEquFields, Line 7 
The multi-part identifier "inserted.Status" could not be bound. 

我可能是路要走,但我很丟失如何以適當的方式做到這一點?

回答

1

你需要加入inserted表,並更新實際的表,而不是插入的表格

試試這個:

CREATE TRIGGER [dbo].[t_checkAucEquFields] 
ON [dbo].[_aucEquUpdateLog] 
AFTER INSERT 
as 
begin 
UPDATE a 
SET 
    [Status] = coalesce(pes.id,'22') 
FROM 
    [_aucEquUpdateLog] a 
JOIN 
    inserted i 
ON 
    i.[your primary key] = a.[your primary key] 
LEFT JOIN 
    v_pobEquStatus pes 
ON 
    pes.statusDescr = i.[Status] 
end 
+0

這工作就像一個魅力。謝謝! – 2014-10-22 13:35:22