insert_username
Отслеживание вносящего изменения пользователя.
Схема размещения:
ext
.Функция
insert_username ()
реализует код триггера, сохраняющего имя текущего пользователя в текстовом поле. Это может быть полезно для отслеживания пользователя, изменившего конкретную строку таблицы последним. Входит в модуль spi
.Модуль
spi
предоставляет несколько рабочих примеров использования «Интерфейса программирования сервера» (Server Programming Interface, SPI) и триггеров. Эти функции полезны как сами по себе и как заготовки, которые можно приспособить под собственные нужды.Каждая группа функций представлена в виде отдельно устанавливаемого расширения:
- refint;
- autoinc;
- insert_username;
- moddatetime.
Функции могут работать с любой таблицей, но при создании триггера необходимо явно указывать имена таблицы и полей.
Для использования функции необходимо:
- создать триггер
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;
Результат выполнения запроса:
Раскрыть type=sqlname | username --------------+---------- nothing | postgres null | postgres empty string | postgres space | postgres tab | postgres name | postgres (6 rows)
Дополнительную информацию по поставляемому модулю insert_username можно получить по ссылке.