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;
Результат выполнения запроса:
name | username --------------+---------- nothing | postgres null | postgres empty string | postgres space | postgres tab | postgres name | postgres (6 rows)
Дополнительную информацию по поставляемому модулю insert_username можно получить по ссылке.