powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / TRIGGERS и тонкости их работы?
11 сообщений из 11, страница 1 из 1
TRIGGERS и тонкости их работы?
    #39903162
ughunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!
Имеется сервер Microsoft SQL Server 2016 (SP2-GDR) (KB4293802) - 13.0.5081.1 (X64)
На событие INSERT в таблице создан триггер.
И вот вопрос: он срабатывает на добавление каждой записи? Т.е. добавили 10 записей (чисто теоретически абсолютно одновременно) - сервер запустит 10 экземпляров триггера или запустит один и в таблице INSERTED будет рекорд-сет?

Грубо говоря - всегда ли таблица INSERTED содержит только одну запись или может быть ситуация когда там 1 и более?

Спасибо!
...
Рейтинг: 0 / 0
TRIGGERS и тонкости их работы?
    #39903175
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ughunter
он срабатывает на добавление каждой записи?

А посмотреть в документацию и увидеть "statement"?.. Он срабатывает за выполнение запроса INSERT.
...
Рейтинг: 0 / 0
TRIGGERS и тонкости их работы?
    #39903177
ughunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Не понял ответа. Я же о другом спрашивал.
...
Рейтинг: 0 / 0
TRIGGERS и тонкости их работы?
    #39903190
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ughunter
Здравствуйте!
Имеется сервер Microsoft SQL Server 2016 (SP2-GDR) (KB4293802) - 13.0.5081.1 (X64)
На событие INSERT в таблице создан триггер.
И вот вопрос: он срабатывает на добавление каждой записи? Т.е. добавили 10 записей (чисто теоретически абсолютно одновременно) - сервер запустит 10 экземпляров триггера или запустит один и в таблице INSERTED будет рекорд-сет?
1(один) раз, то есть таки Dimitry Sibiryakov ответил на поставленный вами вопрос сообщив вам про statement. Срабатывает на оператор, а не на количество записей в результате.
Грубо говоря - всегда ли таблица INSERTED содержит только одну запись или может быть ситуация когда там 1 и более?

Спасибо!Считайте что там ВСЕГДА больше одной записи. Это хоть и виртуальная, но таки таблица.
...
Рейтинг: 0 / 0
TRIGGERS и тонкости их работы?
    #39903207
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ughunter
запустит один и в таблице INSERTED будет рекорд-сет?
Да.
ughunter
может быть ситуация когда там 1 и более?
Нет, там 0 или более.
...
Рейтинг: 0 / 0
TRIGGERS и тонкости их работы?
    #39903217
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ughunter,

и, кстати, не используйте @@ROWCOUNT вначале триггера для определения количества записей,
ибо это сработает неправильно в MERGE, если часть записей вставляется, а другая апдейтится или удаляется.
...
Рейтинг: 0 / 0
TRIGGERS и тонкости их работы?
    #39903228
ughunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizov,

авторСчитайте что там ВСЕГДА больше одной записи. Это хоть и виртуальная, но таки таблица.

т.е. если я правильно понял лучше всего в триггере использовать курсор на таблицу INSERTED ?
...
Рейтинг: 0 / 0
TRIGGERS и тонкости их работы?
    #39903229
ughunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iap,

Спасибо! Буду иметь ввиду
...
Рейтинг: 0 / 0
TRIGGERS и тонкости их работы?
    #39903235
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ughunter
Sergey Sizov,

авторСчитайте что там ВСЕГДА больше одной записи. Это хоть и виртуальная, но таки таблица.


т.е. если я правильно понял лучше всего в триггере использовать курсор на таблицу INSERTED ?Лучше всего использовать обычные команды SQL для таблиц deleted и inserted.
В том числе и самые обычные предикаты в JOIN и WHERE.
Курсоры требуются невероятно редко.
...
Рейтинг: 0 / 0
TRIGGERS и тонкости их работы?
    #39903237
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iap
ughunter
Sergey Sizov,

пропущено...


т.е. если я правильно понял лучше всего в триггере использовать курсор на таблицу INSERTED ?
Лучше всего использовать обычные команды SQL для таблиц deleted и inserted.
В том числе и самые обычные предикаты в JOIN и WHERE.
Курсоры требуются невероятно редко.
Чуть не забыл! Если не объявлять в триггере скалярные переменные, то скорее всего всё будет хорошо!
Я, например, их объявляю, если туда надо поместить сообщение об ошибке перед выходом из триггера.
И это сообщение формируется в разных частях триггера. Ну и т.п.
Без этого можно и обойтись, правда?
...
Рейтинг: 0 / 0
TRIGGERS и тонкости их работы?
    #39903239
ughunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Ситуация более менее прояснилась.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / TRIGGERS и тонкости их работы?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]