insert_username

Отслеживание вносящего изменения пользователя.
Схема размещения: ext.
Функция insert_username () реализует код триггера, сохраняющего имя текущего пользователя в текстовом поле. Это может быть полезно для отслеживания пользователя, изменившего конкретную строку таблицы последним. Входит в модуль spi.
Модуль spi предоставляет несколько рабочих примеров использования «Интерфейса программирования сервера» (Server Programming Interface, SPI) и триггеров. Эти функции полезны как сами по себе и как заготовки, которые можно приспособить под собственные нужды.
Каждая группа функций представлена в виде отдельно устанавливаемого расширения:
Функции могут работать с любой таблицей, но при создании триггера необходимо явно указывать имена таблицы и полей.

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

Для использования функции необходимо:
  • создать триггер BEFORE INSERT и/или UPDATE с этой функцией;
  • передать триггеру аргумент: имя целевого текстового столбца.
Пример использования:
  1. Создать таблицу:
    CREATE TABLE username_test (
     name        text,
     username    text not null
    );
    
  2. Создать триггер, который выполняет функцию insert_username при каждом добавлении и изменении строк в заданной таблице:
    CREATE TRIGGER insert_usernames
        BEFORE INSERT OR UPDATE ON username_test
        FOR EACH ROW
        EXECUTE PROCEDURE insert_username (username);
    
  3. Добавить данные в таблицу:
    INSERT INTO username_test
      VALUES  ('Nothing'),
              ('Null'),
              ('Empty string'),
              ('Space'),
              ('Tab'),
              ('Name');
    
Проверить результат:
SELECT * FROM username_test;
Результат выполнения запроса:
Раскрыть type=sql
     name     | username
--------------+----------
 nothing      | postgres
 null         | postgres
 empty string | postgres
 space        | postgres
 tab          | postgres
 name         | postgres
(6 rows)

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

Дополнительную информацию по поставляемому модулю insert_username можно получить по ссылке.
Предыдущий раздел
hstore_plpythonu
Следующий раздел
intagg
Была ли страница полезной?