Перейти к основному содержимому

insert_username. Отслеживание вносящего изменения пользователя

В исходном дистрибутиве установлено по умолчанию: нет.

Связанные компоненты: отсутствуют.

Схема размещения: ext.

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

Примечание:

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

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

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

Доработка

Доработка не проводилась.

Ограничения

Ограничения отсутствуют.

Установка

При наличии прав администратора СУБД включение модуля возможно выполнить вручную:

CREATE EXTENSION insert_username SCHEMA ext;

Настройка

Настройка не требуется.

Использование модуля

Для использования функции необходимо:

  • создать триггер BEFORE INSERT и/или UPDATE с этой функцией;
  • передать триггеру аргумент: имя целевого текстового столбца.

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

Создать таблицу:

CREATE TABLE username_test (
name text,
username text not null
);

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

CREATE TRIGGER insert_usernames
BEFORE INSERT OR UPDATE ON username_test
FOR EACH ROW
EXECUTE PROCEDURE insert_username (username);

Добавить данные в таблицу:

INSERT INTO username_test 
VALUES ('Nothing'),
('Null'),
('Empty string'),
('Space'),
('Tab'),
('Name');

Проверить результат:

SELECT * FROM username_test;

Результат выполнения запроса:

     name     | username 
--------------+----------
nothing | postgres
null | postgres
empty string | postgres
space | postgres
tab | postgres
name | postgres
(6 rows)

Ссылки на документацию разработчика

Дополнительно поставляемый модуль insert_username: https://www.postgresql.org/docs/15/contrib-spi.html#id-1.11.7.50.7.