powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Instead of триггеры и рекурсия
2 сообщений из 2, страница 1 из 1
Instead of триггеры и рекурсия
    #32024080
dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, я чего то не понимаю, или instead of триггеры не поддерживают рекурсию???
Самый простой пример для проверки:
create trigger z1 on mytable
for delete
as
delete from mytable where 1=0
go
delete from mytable where 1=0

Как и ожидалось получим сообщение об ошибке "Maximum stored procedure, function, trigger, or view nesting level exceeded (limit 32)."
Т.е. убеждаемся что для обычного триггера все работает (в том числе выставлены опции рекурсии на уровне БД и на уровне сервера)

Теперь заменим "for" на "instead of" и он нормально выполнит это, сказав что удалено 0 строк и не вызвав самого себя при каждом вызове Delete.

Конечно приведенный пример сам по себе бессмысленен, но он просто предупреждает вопросы насчет того выставлены ли у меня опции рекурсии. Ну и он наиболее прост. С нормальными примерами тоже не получается...
...
Рейтинг: 0 / 0
Instead of триггеры и рекурсия
    #32024085
Фотография cvasil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BOL: Trigger Execution
...
If an INSTEAD OF trigger defined on a table executes a statement
against the table that would usually fire the INSTEAD OF trigger
again, the trigger is not called recursively. Instead, the statement
is processed as if the table had no INSTEAD OF trigger and starts
the chain of constraint operations and AFTER trigger executions.
...
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Instead of триггеры и рекурсия
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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