Триггеры Sql являются синхронными или асинхронными?

27
задан Joel Spolsky 1 January 2009 в 18:55
поделиться

4 ответа

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

я просто протестировал вставку и триггер обновления и действительно, их считает частью вставки SQL-сервер. процесс не закончится, пока триггер не заканчивается.

25
ответ дан tom.dietrich 14 October 2019 в 14:40
поделиться

Триггеры являются частью транзакции, которая назвала их.

Одна важная вещь о триггерах, о которых необходимо знать, состоит в том, что триггер стреляет однажды для каждой транзакции (по крайней мере, в SQL-сервере, необходимо проверить другой dbs, но даже если это обработает строку строкой, которая обычно является плохой идеей), поэтому если Вы вставляете 6 000 записей триггерные огни однажды не 6000 раз. Многие люди не знают об этом и триггерах записи, как будто они обработают несколько, запись вставляет одну запись за один раз. Это не верно, и Ваш триггер должен составлять вручение нескольких рекордной вставки.

7
ответ дан Community 14 October 2019 в 14:40
поделиться

Триггерный вызов не является асинхронным. Каждый вызов к Вашей процедуре вставки приведет к триггеру, запускаемому, и процедура не возвратится, пока триггер не заканчивается.

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

2
ответ дан Seibar 14 October 2019 в 14:40
поделиться

Вещь, каждый раз, когда ТРИГГЕРНЫМ критериям соответствуют, ТРИГГЕРНЫЕ огни. Это стреляет однажды в пакетную обработку или Транзакцию. Посмотрите мой урок 101 на ТРИГГЕРЕ

1
ответ дан MarlonRibunal 14 October 2019 в 14:40
поделиться
Другие вопросы по тегам:

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