====== INSERTING, UPDATING, DELETING ======
===== Версии сервера =====
^ 0.9 ^ 1.0 ^ 1.5.3 ^ 1.5.4 ^ 1.5.5 ^ 2.0 ^ 2.0.3 ^ 2.0.4 ^ 2.1 ^ 2.5 ^ 3.0 ^
| - | - | Да | Да | Да | Да | Да | Да | Да | Да | Да |
===== Доступно в =====
[[raznovidnosti_jazyka_sql|PSQL]]
===== Формат =====
INSERTING
UPDATING
DELETING
===== Описание =====
Псевдологические переменные INERTING, UPDATING, DELETING доступны __только__ внутри текста триггеров и служат для определения текущего контекста действия триггера. Эти переменные могут быть полезны для триггеров, вызываемых одновременно при вставке, изменении или удалении данных.
===== Пример =====
Следующий пример показывает, как вести учет версии записи при помощи триггера перед вставкой или изменением записи. В момент вставки записи начальное значение домена VERSION_NUMBER таблицы VERSIONEDTABLE инициализируется нулем. Затем, при последующих изменениях записи, новое значение домена получается инкрементом старого.
SET TERM !!!;
CREATE TRIGGER SET_VERSION_NUMBER_BIU_0 FOR VERSIONEDTABLE
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
BEGIN
IF (INSERTING) THEN
NEW.VERSION_NUMBER = 0;
ELSE
IF (UPDATING) THEN
NEW.VERSION_NUMBER = OLD.VERSION_NUMBER + 1;
END
!!!
SET TERM; !!!
===== См. также =====
[[new_old|OLD]], [[new_old|NEW]], [[SET TERM]], [[CREATE TRIGGER]], [[ALTER TRIGGER]], [[RDB$TRIGGERS]]
===== Источник =====
Firebird 1.5 Release Notes