Ад круглой скобки? Я не вижу больше круглой скобки в:
(function toto)
, чем в:
function(toto);
И в
(if tata (toto)
(titi)
(tutu))
не больше, чем в:
if (tata)
toto();
else
{
titi();
tutu();
}
я вижу меньше скобок и'';все же.
Вы не ссылаетесь на table1
внутри триггера. Используйте псевдотаблица inserted
, чтобы получить значения после. Также помните, что обновление может повлиять на несколько строк.
Так что замените текущее утверждение update
на
UPDATE table2
SET table2.annualyear = inserted.intannualyear
FROM table2
JOIN inserted
ON table2.id = inserted.id
. Обновлять записи в таблице2 нужно только в том случае, если задействован столбец intannualyear. Кроме того, это альтернативный синтаксис UPDATE для двух таблиц из того, что показал Мартин
IF UPDATE(intannualyear)
UPDATE table2
SET annualyear = inserted.intannualyear
FROM inserted
WHERE table2.id = inserted.id
Согласно этому вопросу , если есть только одна «нисходящая» таблица, тогда другой вариант с правильно определенной связью внешнего ключа будет каскадным обновлением.
Чтобы дополнить приведенные выше ответы, если вам нужно проверить более одного столбца, вы можете использовать INNER JOIN между вставленным и удаленным или несколькими вызовами UPDATE ():
IF ( UPDATE(Col1) OR UPDATE(Col2) ) BEGIN ...