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;
也许这会解决您的问题。
我必须在 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;
也许这会解决您的问题。