Триггер обновления T-SQL с несколькими строками - PullRequest
0 голосов
/ 27 июня 2010

Рассмотрим триггер after update в таблице A. Для каждого обновления триггер должен обновлять все записи в таблице B. Затем рассмотрим этот запрос:

UPDATE A SET X = Y 

Очевидно, что обновлено много строк.После обновления срабатывает триггер.Теперь, если триггер будет использовать таблицу inserted, и вы хотите обновить таблицу B каждой строкой временной таблицы inserted, а в MSDN не рекомендуется использовать курсоры, как бы вы это сделали?

Спасибо

Ответы [ 2 ]

2 голосов
/ 27 июня 2010

Я не знаю, что именно вы хотите сделать в триггере обновлений, но вы можете, например,

UPDATE dbo.B
SET someColumn = i.Anothervalue
FROM Inserted i
WHERE b.Criteria = i.Criteria

или что-то еще - вам нужно рассказать нам немного больше о том, что вы хотитеделать с таблицей B!Но, безусловно, можно обновлять, вставлять или выполнять другие операции, не используя курсор и не обрабатывая несколько строк из таблицы Inserted.

1 голос
/ 27 июня 2010

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

В этом случае вы можете использовать подзапросы или объединения с inserted, чтобы выбрать строки, которые нужно изменить в таблице B.

UPDATE tableB B
SET B.colx = someValue
WHERE B.id IN
(
    SELECT b_id 
    FROM INSERTED
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...