Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Новое на сайте
Топовые новости
Новое

Инструкция CREATE/ALTER TRIGGER советы и хитрости программирования

Одной из ключевых программных проблем, связанных с триггерами, является бесконтрольное использование вложенных и рекурсивных триггеров. Вложенный триггер — это триггер, который запускает операцию по манипуляции данными, которая заставляет запускаться другие триггеры. Предположим, например, что у нас есть три таблицы: T1, Т2 и ТЗ. В таблице Т1 есть триггер BEFORE INSERT, который вставляет запись в таблицу Т2. В таблице Т2 есть триггер, который вставляет запись в таблицу ТЗ. Хотя все это не обязательно плохо заканчивается, если логика хорошо и полностью продумана, но при этом привносится две проблемы. Во-первых, вставка в таблицу Т1 требует гораздо большего числа операций ввода-вывода, чем простая операция INSERT в таблице Т1. Во-вторых, вы можете столкнуться с трудностями, если на самом деле таблица ТЗ выполняет вставку в таблицу Т1. В таком случае вы увидите циклический процесс выполнения триггеров, который может занять все свободное место на диске и даже вывести сервер из строя.

Рекурсивные триггеры — это такие триггеры, которые запускают сами себя, например, триггер INSERT, который выполняет вставку в свою собственную таблицу. Если процедурная логика в блоке кода не будет правильной, вы столкнетесь с циклическим запуском триггера. Однако для использования рекурсивных триггеров на различных платформах требуется установить специальный конфигурационный флаг.

Источник