Одно распространенное заблуждение о триггерах в SQL Server: они НЕ запускаются в каждой строке - но оператором .
И поэтому, когда у вас есть оператор, который вставляет или обновляет несколько строк, ваши псевдотаблицы Inserted
(и / или Deleted
) в триггере будут содержать несколько строк. НЕ предположим, что вы имеете дело с одной строкой!Такой триггер рано или поздно выйдет из строя
Так что в вашем случае вы, вероятно, захотите написать что-то вроде этого:
UPDATE t
SET AllActive = i.Active
FROM Inserted i
INNER JOIN dbo.Table2 AS t
ON t.ID = i.ID
Это обновит все строки таблицы Table2
установите для столбца AllActive
значение Active
для каждой строки, содержащейся в таблице Inserted
(содержит вновь вставленные строки и новые значения для обновленных строк)