Могу ли я создать триггер, запускающий другой триггер? - PullRequest
1 голос
/ 23 октября 2019

У меня есть 2 таблицы, таблица A и таблица B. У меня есть триггер на A есть вход столбца таблицы B. Так что же происходит, когда я обновляю таблицу A: будет ли также обновляться таблица B?

Что мне делать, если я тоже хочу обновить таблицу B?

1 Ответ

2 голосов
/ 23 октября 2019

Чисто на основе вашего примера (если я правильно понимаю) это звучит как отношение внешнего ключа, где вы указываете каскад UPDATE.

Пример кода:

ALTER TABLE [dbo].[Foo]  WITH CHECK ADD  CONSTRAINT [FK_FooBar] FOREIGN KEY([BarID])
REFERENCES [dbo].[Bar] ([BarID])
ON UPDATE CASCADE

Что делаетизмените BarID в таблице dbo.Foo и перейдите к полю BarID, на которое оно ссылается в dbo.Bar

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

Обратите внимание, что эта опция только для триггеров AFTER, которые могут быть «сцеплены» / вложеныдо 32 раз. И не ВМЕСТО триггеров.

Msdn статьи:

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