русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Отмена вложенных триггеров


Дата добавления: 2013-12-23; просмотров: 1150; Нарушение авторских прав


Уровни Вложения

Как работают вложенные триггеры

Определение

Как работают вложенные триггеры

 

Любой триггер может содержать оператор INSERT, UPDATE, или DELETE, который затрагивает другую таблицу. Триггеры называются вложенными, когда триггер выполняет действие, которое начинает другой триггер.

 

Вы можете управлять вложенностью триггеров при использовании опции конфигурации сервера вложенных триггеров. Вложенность доступна при установке и устанавливается на уровне сервера, но Вы можете отменить и повторно сделать ее доступной при использовании системной хранимой процедуры sp_configure.

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

Примите к сведению следующие факты, когда Вы используете вложенные триггеры:

■ По умолчанию опция конфигурации вложенности триггеров установлена в ON.

■ Вложенный триггер не будет срабатывать дважды на одну и ту же транзакцию триггера; триггер не вызывает сам себя в ответ на второе обновление той же самой таблицы в пределах триггера. Однако если триггер изменяет таблицу, что заставляет другой триггер срабатывать, а второй триггер изменяет эту таблицу, то первый триггер будет срабатывать рекурсивно. Чтобы предотвратить косвенную рекурсию такого вида, выключите опцию вложенных триггеров.

■, Поскольку триггер – это транзакция, отказ на любом уровне ряда вложенных триггеров отменяет всю транзакцию, и все модификации данных откатываются.

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



 

Уровень вложения увеличивается при каждом срабатывании вложенных триггеров. SQL Server поддерживает до 32 уровней вложения, но Вы могли бы ограничить уровни вложения, чтобы избежать превышения максимального уровня вложения. Вы можете использовать функцию @@NESTLEVEL, чтобы видеть текущие уровни вложения.

 

Вложения является сильной особенностью, которую Вы можете использовать, чтобы поддержать целостность данных по всей базе данных. Иногда, однако, Вы хотели бы отменить вложение. Если вложение отменено, триггеры не могут выполняться каскадом (триггер не может выполнять действие, на которое срабатывает другой триггер, который инициирует следующий триггер, и так далее).

Вы могли бы решить отменить вложение потому что:

■ Вложенные триггеры требуют сложного и хорошо запланированного проекта. Каскадирование изменений может привести к непреднамеренным модификациям данных.

■ Модификация данных в любой точке в серии вложенных триггеров отменяет серии триггеров. Хотя это предлагает мощную защиту для Ваших данных, может возникнуть проблема, если Ваши таблицы должны быть обновлены в определенной последовательности.

 

Используйте следующий оператор, чтобы отменить вложение.

sp_configure 'nested triggers', 0

 



<== предыдущая лекция | следующая лекция ==>
Реализация триггера INSTEAD OF | Как управлять рекурсивным вызовом


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.