Два триггера на одном столе sql server - PullRequest
0 голосов
/ 22 июля 2010

У меня есть два триггера для одной из таблиц в моей базе данных.Один для триггера вставки, а другой триггер после обновления.Триггер вставки обновит таблицу значениями.У меня вопрос такой;Возможно ли, что триггер обновления срабатывает в то время, когда вставка выполняет свою работу?

Ответы [ 2 ]

2 голосов
/ 22 июля 2010
Триггер

A FOR INSERT сработает только на INSERT операторах.Триггер FOR UPDATE будет запускать только на UPDATE операторах.Конечно, если ваш триггер вставки выполняет какие-либо операторы UPDATE, он сработает триггер обновления, и наоборот.

Ваш триггер UPDATE не сработает для оператора INSERT (исключая обновление-в случае триггера выше), но, конечно, вам все равно придется проектировать параллелизм, поскольку два разных пользователя могут одновременно выполнять две разные операции - одну INSERT и одну UPDATE.

0 голосов
/ 22 июля 2010

Если ваш триггер вставки выполняет обновление таблицы, будет вызван триггер обновления.Если триггер запускает другой триггер, он называется «рекурсивный триггер».

Рекурсивные триггеры можно отключить для всего сервера:

sp_configure 'nested_triggers', 0
go
reconfigure

или для одной базы данных:

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