Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Instead of триггеры и рекурсия / 2 сообщений из 2, страница 1 из 1
28.02.2002, 15:26
    #32024080
dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Instead of триггеры и рекурсия
Господа, я чего то не понимаю, или 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
28.02.2002, 16:39
    #32024085
cvasil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Instead of триггеры и рекурсия
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
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Instead of триггеры и рекурсия / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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