Книга: Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ

Последовательность

Последовательность

Для любой комбинации фаза/событие Firebird позволяет использовать множество триггеров. Вероятно, существует какое-то практическое ограничение, однако можно с уверенностью сказать, что вы можете создавать столько триггеров, сколько вам нужно с использованием целых чисел от 0 до 32 767. Последовательный номер по умолчанию (POSITION) ноль. Хорошей практикой является задание для триггера порядка выполнения, однако явное указание последовательности не является обязательным. Если присутствуют последовательные номера, триггеры будут выполняться в возрастающем порядке. Числа не должны быть уникальными, последовательность может иметь разрывы.

Набор триггеров для фазы/события со значением по умолчанию POSITION 0 будет выполняться в алфавитном порядке их имен. То же самое можно ожидать, если вы имеете группу триггеров, имеющих один и тот же не нулевой последовательный номер.

Следующий пример демонстрирует, как будут выполняться четыре триггера изменения (UPDATE) для таблицы ACCOUNT:

CREATE TRIGGER BU_ACC0UNT5 FOR ACCOUNT

ACTIVE BEFORE UPDATE POSITION 5 AS ...

CREATE TRIGGER BU_ACCOUNTO FOR ACCOUNT

ACTIVE BEFORE UPDATE POSITION 0 AS ...

CREATE TRIGGER AU_ACCOUNT5 FOR ACCOUNT

ACTIVE AFTER UPDATE POSITION 5 AS ...

CREATE TRIGGER AU_ACCOUNT3 FOR ACCOUNT

ACTIVE AFTER UPDATE POSITION 3 AS ...

Кто-то изменяет некоторые строки в таблице ACCOUNT:

UPDATE ACCOUNT SET С ='CANCELED' WHERE C2 = 5;

Вот последовательность событий для каждой изменяемой строки:

1. Выполняется триггер BU_ACCOUNTO.

2. Выполняется триггер BU_ACCOUNTS.

3. Новая версия записи записывается на диск.

4. Выполняется триггер AU_ACCOUNT3.

5. Выполняется триггер AU_ACCOUNT5.

Оглавление книги

Оглавление статьи/книги

Генерация: 0.208. Запросов К БД/Cache: 2 / 0
поделиться
Вверх Вниз