Sql 服务器 2008 触发器在更新查询后不工作

Sql server 2008 trigger not working after update query

我必须在 table 上实施触发器,以便在每次更新行时自动更新某些列。我正在使用以下触发器语法:

create trigger degreedSkillPlan_updated on degreedSkillPlan
after update 
as
if (select trigger_nestlevel() )> 1     return;

    declare @id varchar;

     update degreedSkillPlan set updatedDate = getdate(), lastModifiedDate = getDate() FROM inserted 
WHERE inserted.skillPlanId = skillPlanId; ;

但这不起作用。我之前没有真正实现任何触发器。我已经在线阅读了一些教程,但我无法弄清楚这有什么问题。此外,这是否适用于 >Handling multiple rows in SQL Server trigger

的接受答案中所述的多行

您的代码在多个层面上都是错误的:

  • varchar 没有长度是不好的,通常会做错事。
  • 假设 insert 只有一行是不正确的。
  • 正文应在 begin/end 块中。

所以:

create trigger degreedSkillPlan_updated on degreedSkillPlan
after update  as
begin
    if (trigger_nestlevel() ) > 1 return;

    update degreedSkillPlan
        set updatedDate = getdate(),
            lastModifiedDate = getDate()
        where skillPlanId in (select i.skillPlanId from inserted i);
end;

也许这会解决您的问题。