使用表触发器更新插入的行

时间:2014-10-22 11:31:26

标签: sql-server triggers insert

我无法弄清楚如何使用表触发器更新最后插入的行。

我试过这个:

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]

我想插入的文本.Status - ex为“In stock”,用整数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 个答案:

答案 0 :(得分: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