Триггер — это действие, которое запускается при добавлении, изменении или удалении записи. Это действие запускается в СУБД. Чаще всего триггеры нужны для математических вычислений. Например, чтобы посчитать общую стоимость заказа при добавлении в заказ нескольких позиций. Формулы такое сделать не могут, т.к. они всегда изменяют поля текущего объекта.
Управление триггерами происходит из таблицы триггеров, которая открывается из карточки поля объекта при нажатии на кнопку в полях: Приемник, Источник и Источник 2. Поле объекта должно существовать иначе кнопки управления триггерами будут не видны. При добавлении триггера в таблицу триггеров появляется следующий диалог.
Для создания триггера нужно заполнить поля на карточке. Некоторые из них всегда обязательны для заполнения (тип триггера, приемник). Другие требуется заполнить в зависимости от выбранных значений.
Поля карточки «Триггер»
Поле | Описание |
---|---|
Тип триггера | Действие триггера. То, что триггер будет делать. |
Связь | Указывается, если действие триггера связано с родительским объектом. Значение поля отображается в формате «Род.объект < Доч.объект (поле-связи)». |
Приемник | Поле, значение которое будет изменено триггером. |
Источник | Поле, значение которого будет использоваться триггером для вычисления поля-приемника. |
Источник 2 | Поле, значение которого будет использоваться триггером для вычисления поля-приемника. |
Порядок | Определяет порядок, в котором срабатывают триггеры. Целое число от 0 до 32767. Триггер с меньшим номером срабатывает раньше. |
Пересчитать поле-приемник | Требуется ли пересчитать поле-приемник при создании или удалении триггера. |
Триггеры можно разделить на две группы: Изменяющие и Заменяющие.
Изменяющие триггеры
Изменяющие триггеры изменяют значение поля-приемник, увеличивая или уменьшая его на какое-то значение.
Например: Приемник = Приемник + Источник.
Или: Приемник = Приемник — Источник — Источник 2.
К одному полю-приемнику можно применить несколько изменяющих триггеров.
Тип триггера | Описание |
---|---|
Увеличить сумму | Приемник = Приемник + Источник [+ Источник 2] |
Уменьшить сумму | Приемник = Приемник — Источник [- Источник 2] |
Увеличить количество | Приемник = Приемник + 1. Приемник увеличивается на 1 при добавлении записи в дочерний объект. Другими словами приемник увеличится на количество записей дочернего объекта. |
Уменьшить количество | Приемник = Приемник — 1. Приемник уменьшается на 1 при добавлении записи в дочерний объект. Другими словами приемник уменьшиться на количество записей дочернего объекта. |
При изменении значения источника приемник пересчитывается соответствующим образом. Тоже происходит при подсчете количества.
Заменяющие триггеры
Заменяющие триггеры заменяют значение поля-приемник результатом вычисления полей-источников.
Например: Приемник = Источник * Источник 2.
К одному полю-приемнику можно применить только один заменяющий триггер.
Тип триггера | Описание |
---|---|
Сложить | Приемник = Источник + Источник 2 |
Вычесть | Приемник = Источник — Источник 2 |
Умножить | Приемник = Источник * Источник 2 |
Разделить | Приемник = Источник / Источник 2 |
Общие замечания
- Поля-приемники одних триггеров можно использовать как поля-источники других триггеров.
- Для триггеров без связи, т.е. у которых приемники и источники принадлежат одному объекту, требуется указать правильный порядок срабатывания.
- Для полей-приемников можно указать формулы. Но использовать эту возможность следует только для того, чтобы установить там ноль при добавлении новой записи.
- Не рекомендуется использовать поля-приемники в формулах.