Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как-то неожиданно работают триггеры / 8 сообщений из 8, страница 1 из 1
27.03.2002, 16:06
    #32026342
Vit.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как-то неожиданно работают триггеры
Есть таблицы А,В,С. Для таблицы А есть триггер на update, который выполняет
update ну к примеру 5-ти строк таблицы В. Для таблицы В также есть триггер на update,
который выполняет обновление только 1 строки таблицы С.
Я ожидаю ,что при update каждой строки в таблице В, триггер сработает столько раз,
сколько строк в таблице В (в нашем случае 5) обновлено.Реально вижу , что update-триггер таблицы В сработал только при обновлении последней (5-ой) строки.Почему?
Опция разрешения вложенных триггеров включена.

ЗЫ: MSSQL 7.0 без сервис-паков
...
Рейтинг: 0 / 0
27.03.2002, 16:32
    #32026345
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как-то неожиданно работают триггеры
Триггеры срабатывают на событие, т.е. команду, независимо от того, сколько записей в действительности будет обработано командой.
Т.е. при обновлении одной командой 5-записей из таблицы В триггер сработает 1 раз, но его таблицы inserted и deleted будут содержать по 5 записей.

IMHO ваш триггер на UPDATE для таблицы В не проверяет количество действительно обработанных записей
...
Рейтинг: 0 / 0
27.03.2002, 17:48
    #32026352
sysop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как-то неожиданно работают триггеры
И это правильно. Но в триггере можно самостоятельно организовать 'построчную' обработку, если это действительно нужно.
...
Рейтинг: 0 / 0
27.03.2002, 22:26
    #32026354
Deosfen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как-то неожиданно работают триггеры
Триггер срабатывает один раз, но не нужно делать построчную обработку, то что написано в триггере будет выполняться столько раз сколько кол-во строк в таблице inserted. Может я не прав?
...
Рейтинг: 0 / 0
28.03.2002, 06:37
    #32026360
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как-то неожиданно работают триггеры
2deosfen
Нет не правы - тело триггера выполнится тоже один раз
...
Рейтинг: 0 / 0
28.03.2002, 06:39
    #32026361
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как-то неожиданно работают триггеры
Не прав. Напиши простенький такой триггер с телом print 'my trigger'и привесь его на таблицу. Выполнится один раз, независимо от количества строк в inserted. Даже если ноль
А будет обработка построчная или всей таблицы inserted - дело ваше, как напишете...
...
Рейтинг: 0 / 0
28.03.2002, 22:55
    #32026440
Deosfen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как-то неожиданно работают триггеры
Приветствую всех, в таблицу добавляю несколько записей, n-запись не удолетворяет каким-то условиям, то все записи не записываются. Или что-то не так?
...
Рейтинг: 0 / 0
29.03.2002, 07:13
    #32026460
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как-то неожиданно работают триггеры
Если добавление нескольких записей происходит в одной транзакции и одна из них не удовлетворяет условиям, то, естественно, не запишутся все.

Запись вида insert into t1 (col1, col2) select col1, col2 from t2
вызывает открытие неявной транзакции. Поэтому все записи будут откачены. Это правильное поведение.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как-то неожиданно работают триггеры / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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