×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

При отключении обработки cookie наш сайт продолжит функционировать, однако будут использоваться исключительно необходимые технические файлы, без которых работа ресурса невозможна.

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

5.3.3. Написание функций событийных триггеров на языке C

В данном разделе представлены низкоуровневые сведения об интерфейсе функции событийного триггера. Данная информация необходима только при написании функций событийных триггеров на языке C. При использовании языков более высокого уровня эти детали обрабатываются автоматически. В большинстве случаев перед написанием событийных триггеров на языке C следует рассмотреть возможность использования процедурных языков. В документации к каждому процедурному языку объясняется порядок написания событийного триггера на соответствующем языке.

В функциях событийных триггеров должен использоваться «интерфейс менеджера функций» интерфейс менеджера функций.

При вызове функции менеджером событийных триггеров ей не передаются обычные аргументы; вместо этого передается «контекстный» указатель, ссылающийся на EventTriggerData структуру. В функциях на языке C проверку вызова менеджером событийных триггеров можно выполнить с помощью макроса:

CALLED_AS_EVENT_TRIGGER(fcinfo)

который развертывается в:

((fcinfo)->context != NULL && IsA((fcinfo)->context, EventTriggerData))

Если данное условие истинно, то приведение fcinfo->context к типу EventTriggerData * является безопасным и позволяет обращаться к EventTriggerData структуре. При этом функция не должна изменять EventTriggerData саму структуру или любые данные, на которые она указывает.

struct EventTriggerData определена в файле commands/event_trigger.h:

typedef struct EventTriggerData
{
    NodeTag     type;
    const char *event;      /* имя события */
    Node       *parsetree;  /* дерево разбора */
    CommandTag  tag;        /* тег команды */
} EventTriggerData;

где элементы структуры определены следующим образом:

тип

Всегда T_EventTriggerData.

событие

Описывает событие, для которого вызывается функция; одно из следующих: "login", "ddl_command_start", "ddl_command_end", "sql_drop", "table_rewrite". См. Раздел 5.3.1 для получения информации о значении этих событий.

parsetree

Указатель на дерево разбора команды. Для получения подробных сведений следует обратиться к исходному коду PostgreSQL. Структура дерева разбора может быть изменена без предварительного уведомления.

tag

Тег команды, связанный с событием, для которого запускается событийный триггер, например, "CREATE FUNCTION".

Функция событийного триггера должна возвращать NULL указатель (не не значение SQL null, то есть параметр isNull true).

Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению