AdTech AI PostgreSQL О компании
PostgreSQL · Триггеры 14 февраля, 2025 Сергей Томулевич

Управляющее поле

Концепция управляющего поля в PostgreSQL для контроля поведения триггеров при каскадных или перекрёстных обновлениях данных.

Введение

Концепция управляющего поля в PostgreSQL для контроля поведения триггеров при каскадных или перекрёстных обновлениях данных.

Задачи управляющего поля

Назовём поле _trigger_off. Его основные функции:

Поле имеет тип BOOLEAN (с учётом NULL получается 4 варианта: TRUE, FALSE, NULL, NOT NULL).

Правила управляющего поля

1. Поле в таблице ВСЕГДА сохраняется NULL

Создаётся общая функция для сброса значения:

CREATE FUNCTION "public"."flush_trigger_off" ()
RETURNS TRIGGER AS
$body$
BEGIN
    NEW._trigger_off := NULL;
    RETURN NEW;
END;
$body$
LANGUAGE 'plpgsql'
VOLATILE;

И триггер для её использования:

CREATE TRIGGER flush_control_field
    BEFORE INSERT OR UPDATE
    ON [table_name] FOR EACH ROW
    EXECUTE PROCEDURE "public"."flush_trigger_off"();

2. Поле НЕ должно использоваться внешним приложением

Это внутреннее поле БД. Исключение — восстановление целостности данных при необходимости.

3. Поле должно ВСЕГДА использоваться во внутренних запросах

При вызове из хранимых процедур поле помогает контролировать каскадные обновления.

Заключение

Управляющее поле позволяет контролировать точки входа запросов и принимать соответствующие решения на уровне триггеров.

Готовы посчитать собственный стек? Расскажем, какие модули и какая нагрузка нужны под вашу задачу.

to@prototypes.ventures