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

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

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

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

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

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

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

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

2.6.30. Функции триггеров событий

2.6.30.1. Фиксация изменений при завершении команды
2.6.30.2. Обработка объектов, удаленных DDL-командой
2.6.30.3. Обработка события перезаписи таблицы

Digital Q.DataBase предоставляет следующие вспомогательные функции для получения информации из триггеров событий.

Для получения дополнительных сведений о триггерах событий обратитесь к разделу Глава 5.3.

2.6.30.1. Фиксация изменений при завершении команды #

pg_event_trigger_ddl_commands () → setof record

pg_event_trigger_ddl_commands возвращает список команд DDL команды, выполняемые при каждом действии пользователя, в случае их вызова в функции, привязанной к ddl_command_end триггера события. При вызове в любом другом контексте генерируется ошибка. pg_event_trigger_ddl_commands возвращает одну строку для каждой выполненной базовой команды; некоторые команды, представляющие собой одну инструкцию на языке SQL, могут возвращать более одной строки. Данная функция возвращает следующие столбцы:

ИмяТипОписание
classidoidOID системного каталога, к которому относится данный объект
objidoidOID самого объекта
objsubidintegerИдентификатор подобъекта (например, номер атрибута для столбца)
command_tagtextТег команды
object_typetextТип объекта
schema_nametext Имя схемы, к которой относится объект (при наличии); в противном случае NULL. Экранирование не применяется.
object_identitytext Текстовое представление идентификатора объекта с указанием схемы. Каждый идентификатор, входящий в состав полного имени, при необходимости заключается в кавычки.
in_extensionbooleanВозвращает значение True, если команда является частью скрипта расширения
командаpg_ddl_command Полное представление команды во внутреннем формате. Данное значение нельзя вывести напрямую, но его можно передать в другие функции для получения различных сведений о данной команде.

2.6.30.2. Обработка объектов, удаленных DDL-командой #

pg_event_trigger_dropped_objects () → setof record

pg_event_trigger_dropped_objects возвращает список всех объектов, удаленных командой, в рамках события которой sql_drop вызывается данная функция. При вызове в любом другом контексте генерируется ошибка. Данная функция возвращает следующие столбцы:

ИмяТипОписание
classidoidOID системного каталога, к которому принадлежал объект
objidoidOID самого объекта
objsubidintegerИдентификатор подобъекта (например, номер атрибута для столбца)
исходныйbooleanВозвращает значение True, если объект являлся одним из корневых объектов удаления
нормальныйboolean Возвращает значение True, если в графе зависимостей, ведущем к данному объекту, существовала нормальная связь
is_temporaryboolean Значение True, если данный объект был временным
object_typetextТип объекта
schema_nametext Имя схемы, к которой принадлежал объект (если применимо); в противном случае — NULL. Экранирование не применяется.
object_nametext Имя объекта, если сочетание имени схемы и имени объекта может быть использовано в качестве уникального идентификатора объекта; в противном случае — NULL. Экранирование кавычками не применяется, и имя никогда не дополняется именем схемы.
object_identitytext Текстовое представление идентификатора объекта с указанием схемы. Каждый идентификатор, входящий в состав полного имени, при необходимости заключается в кавычки.
address_namestext[] Массив, который совместно с object_type и address_args, может быть использован с pg_get_object_address функцией для того, чтобы повторно сформировать адрес объекта на удаленном сервере, содержащем одноименный объект того же типа.
address_argstext[] Дополнение для address_names

Данный pg_event_trigger_dropped_objects данная функция может быть использована в триггере событий следующим образом:

CREATE FUNCTION test_event_trigger_for_drops()
        RETURNS event_trigger LANGUAGE plpgsql AS $$
DECLARE
    obj record;
BEGIN
    FOR obj IN SELECT * FROM pg_event_trigger_dropped_objects()
    LOOP
        RAISE NOTICE '% dropped object: % %.% %',
                     tg_tag,
                     obj.object_type,
                     obj.schema_name,
                     obj.object_name,
                     obj.object_identity;
    END LOOP;
END;
$$;
CREATE EVENT TRIGGER test_event_trigger_for_drops
   ON sql_drop
   EXECUTE FUNCTION test_event_trigger_for_drops();

2.6.30.3. Обработка события перезаписи таблицы #

Функции, приведенные в Таблица 2.6.108 предоставляют информацию о таблице, для которой table_rewrite только что было вызвано событие. При вызове в любом другом контексте возникает ошибка.

Таблица 2.6.108. Функции получения информации о перезаписи таблицы

Функция

Описание

pg_event_trigger_table_rewrite_oid () → oid

Функция возвращает идентификатор OID таблицы, которая подлежит перезаписи.

pg_event_trigger_table_rewrite_reason () → integer

Функция возвращает код, поясняющий причину или причины перезаписи. Данное значение представляет собой битовую маску, сформированную из следующих значений: 1 (изменение свойства постоянства таблицы), 2 (изменение значения по умолчанию для столбца), 4 (изменение типа данных столбца) и 8 (изменение метода доступа к таблице).


Данные функции можно использовать в триггере событий следующим образом:

CREATE FUNCTION test_event_trigger_table_rewrite_oid()
 RETURNS event_trigger
 LANGUAGE plpgsql AS
$$
BEGIN
  RAISE NOTICE 'rewriting table % for reason %',
                pg_event_trigger_table_rewrite_oid()::regclass,
                pg_event_trigger_table_rewrite_reason();
END;
$$;

CREATE EVENT TRIGGER test_table_rewrite_oid
                  ON table_rewrite
   EXECUTE FUNCTION test_event_trigger_table_rewrite_oid();

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

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