Триггер Sql server 2008 не работает после запроса на обновление - PullRequest
0 голосов
/ 23 сентября 2019

Мне нужно реализовать триггер для таблицы, чтобы некоторые столбцы автоматически обновлялись при каждом обновлении строки.Я использую следующий синтаксис триггера:

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; ;

, но это не работает.Я до сих пор не реализовал триггер.Я прочитал некоторые учебники онлайн, но я не могу понять, что не так с этим.Также это будет работать для нескольких строк, как указано в принятом ответе> Обработка нескольких строк в триггере SQL Server

1 Ответ

1 голос
/ 23 сентября 2019

Ваш код неверен на нескольких уровнях:

  • 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;

Возможно, это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...