How to use update trigger to update another table?

Ад круглой скобки? Я не вижу больше круглой скобки в:

(function toto)

, чем в:

function(toto);

И в

(if tata (toto)
  (titi)
  (tutu))

не больше, чем в:

if (tata)
  toto();
else
{
  titi();
  tutu();
}

я вижу меньше скобок и'';все же.

24
задан Juan Mellado 4 May 2012 в 12:50
поделиться

4 ответа

Вы не ссылаетесь на table1 внутри триггера. Используйте псевдотаблица inserted, чтобы получить значения после. Также помните, что обновление может повлиять на несколько строк.

Так что замените текущее утверждение update на

UPDATE table2
SET    table2.annualyear = inserted.intannualyear
FROM   table2
       JOIN inserted
         ON table2.id = inserted.id  
.
27
ответ дан 28 November 2019 в 23:46
поделиться

Обновлять записи в таблице2 нужно только в том случае, если задействован столбец intannualyear. Кроме того, это альтернативный синтаксис UPDATE для двух таблиц из того, что показал Мартин

IF UPDATE(intannualyear)
    UPDATE table2
    SET    annualyear = inserted.intannualyear
    FROM   inserted
    WHERE table2.id = inserted.id
9
ответ дан 28 November 2019 в 23:46
поделиться

Согласно этому вопросу , если есть только одна «нисходящая» таблица, тогда другой вариант с правильно определенной связью внешнего ключа будет каскадным обновлением.

1
ответ дан 28 November 2019 в 23:46
поделиться

Чтобы дополнить приведенные выше ответы, если вам нужно проверить более одного столбца, вы можете использовать INNER JOIN между вставленным и удаленным или несколькими вызовами UPDATE ():

IF ( UPDATE(Col1) OR UPDATE(Col2) ) BEGIN ...
0
ответ дан 28 November 2019 в 23:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: