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

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

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

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

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

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

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

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

8.6.64. spi — Возможности и примеры Server Programming Interface (SPI)

8.6.64.1. refint — Функции для реализации ссылочной целостности
8.6.64.2. autoinc — Функции для автоинкрементных полей
8.6.64.3. insert_username — Функции для отслеживания пользователей, изменивших таблицу
8.6.64.4. moddatetime — Функции для отслеживания времени последнего изменения

Модуль spi модуль предоставляет несколько практических примеров использования Server Programming Interface (SPI) и триггеров. Хотя эти функции представляют определенную ценность сами по себе, они еще более полезны в качестве примеров, которые можно адаптировать для собственных целей. Функции достаточно универсальны для работы с любой таблицей, однако при создании триггера необходимо указать имена таблиц и полей (как описано ниже).

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

8.6.64.1. refint — Функции для реализации ссылочной целостности #

check_primary_key() и check_foreign_key() используются для проверки ограничений внешнего ключа. (Данная функциональность, разумеется, давно заменена встроенным механизмом внешних ключей, но модуль по-прежнему полезен в качестве примера).

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

check_foreign_key() проверяет ссылочную таблицу. Для использования создайте BEFORE DELETE OR UPDATE используйте триггер с данной функцией для таблицы, на которую ссылаются другие таблицы. Укажите в качестве аргументов триггера: количество ссылающихся таблиц, для которых функция должна выполнять проверку, и действие, выполняемое при обнаружении ссылающегося ключа (cascade — для удаления ссылающейся строки, restrict — для отмены транзакции, если ссылающиеся ключи существуют, setnull — для установки полей ссылающегося ключа в значение NULL), имена столбцов целевой таблицы, образующих первичный или уникальный ключ, затем имя ссылающейся таблицы и имена столбцов (повторяется для каждого количества ссылающихся таблиц, указанного в первом аргументе). Обратите внимание, что столбцы первичного или уникального ключа должны быть помечены как NOT NULL и иметь уникальный индекс.

Примеры приведены в refint.example.

8.6.64.2. autoinc — Функции для автоинкрементных полей #

autoinc() — это триггер, сохраняющий следующее значение последовательности в целочисленное поле. Этот функционал частично пересекается со встроенной возможностью «столбцов serial» функциональностью, однако они не идентичны: autoinc() будет переопределять попытки подстановки иного значения поля при операциях вставки, а также, опционально, может применяться для инкремента поля при обновлениях.

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

Пример приведен в autoinc.example.

8.6.64.3. insert_username — Функции для отслеживания пользователей, изменивших таблицу #

insert_username() — это триггер, сохраняющий имя текущего пользователя в текстовое поле. Это может быть полезно для отслеживания того, кто последним изменил конкретную строку в таблице.

Для использования создайте BEFORE INSERT и/или UPDATE триггер, использующий данную функцию. Укажите один аргумент триггера: имя изменяемого текстового столбца.

Пример приведен в insert_username.example.

8.6.64.4. moddatetime — Функции для отслеживания времени последнего изменения #

moddatetime() — это триггер, сохраняющий текущее время в timestamp поле. Это может быть полезно для отслеживания времени последнего изменения конкретной строки в таблице.

Для использования создайте BEFORE UPDATE триггер, использующий данную функцию. Укажите единственный аргумент триггера: имя изменяемого столбца. Столбец должен иметь тип timestamp или timestamp with time zone.

Пример приведен в moddatetime.example.

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

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