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

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

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

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

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

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

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

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

2.6.29. Триггерные функции

Хотя во многих случаях используются триггерные функции, написанные пользователем, Digital Q.DataBase предоставляет несколько встроенных триггерных функций, которые можно использовать непосредственно в пользовательских триггерах. Они кратко описаны в Таблица 2.6.107. (Существуют также дополнительные встроенные триггерные функции, реализующие ограничения внешнего ключа и отложенные ограничения индекса. Они здесь не рассматриваются, так как пользователям не нужно вызывать их напрямую.)

Дополнительные сведения о создании триггеров приведены в CREATE TRIGGER.

Таблица 2.6.107. Встроенные триггерные функции

Функция

Описание

Пример использования

suppress_redundant_updates_trigger ( ) → trigger

Подавляет избыточные операции обновления (do-nothing). Подробности приведены ниже.

CREATE TRIGGER ... suppress_redundant_updates_trigger()

tsvector_update_trigger ( ) → trigger

Автоматически обновляет tsvector столбец из связанных столбец (столбцы) документа в формате обычного текста. Конфигурация текстового поиска, которую необходимо использовать, указывается по имени в качестве аргумента триггера. См. Раздел 2.9.4.3 для получения подробных сведений.

CREATE TRIGGER ... tsvector_update_trigger(tsvcol, 'pg_catalog.swedish', title, body)

tsvector_update_trigger_column ( ) → trigger

Автоматически обновляет tsvector столбец из связанных столбец (столбцы) документа в формате обычного текста. Конфигурация текстового поиска, которую необходимо использовать, извлекается из regconfig столбца таблицы. См. Раздел 2.9.4.3 для получения подробных сведений.

CREATE TRIGGER ... tsvector_update_trigger_column(tsvcol, tsconfigcol, title, body)


Метод suppress_redundant_updates_trigger функция, применяемая как строчный BEFORE UPDATE триггер, предотвращает выполнение любого обновления, которое фактически не изменяет данные в строке. Данное действие переопределяет стандартное поведение, при котором физическое обновление строки выполняется всегда, независимо от того, изменились данные или нет. (Такое стандартное поведение ускоряет выполнение операций обновления, так как не требуется проверка, и также полезно в определенных случаях.)

В идеале следует избегать выполнения операций обновления, которые фактически не изменяют данные в записи. Избыточные обновления могут привести к значительным непроизводительным затратам времени, особенно при наличии большого количества изменяемых индексов, а также к потере места из-за появления «мертвых» строк, которые со временем потребуют очистки. Однако выявление таких ситуаций в клиентском коде не всегда является простой или даже возможной задачей, а написание выражений для их обнаружения сопряжено с риском возникновения ошибок. В качестве альтернативы можно использовать suppress_redundant_updates_trigger, что позволит пропускать операции обновления, не изменяющие данные. Однако использовать данный подход следует с осторожностью. Выполнение триггера занимает небольшое, но значимое время для каждой записи, поэтому, если большинство затрагиваемых записей действительно изменяется, использование этого триггера в среднем замедлит выполнение операций обновления.

Метод suppress_redundant_updates_trigger функция может быть добавлена к таблице следующим образом:

CREATE TRIGGER z_min_update
BEFORE UPDATE ON tablename
FOR EACH ROW EXECUTE FUNCTION suppress_redundant_updates_trigger();

В большинстве случаев данный триггер необходимо вызывать последним для каждой строки, чтобы он не переопределял действия других триггеров, которые могут изменять строку. Учитывая, что триггеры вызываются в алфавитном порядке их имен, следует выбирать имя триггера, стоящее в списке после имен всех остальных триггеров, созданных для этой таблицы. (Отсюда и «z» префикс в данном примере).

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

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