PostgreSQL - СОЗДАТЬ ТРИГГЕР

Опубликовано: 30 Марта, 2022

Чтобы создать новый триггер в PostgreSQL, выполните следующие действия:

  • Сначала создайте функцию триггера, используя оператор CREATE FUNCTION.
  • Во-вторых, привяжите функцию триггера к таблице с помощью оператора CREATE TRIGGER.

Функция триггера похожа на обычную функцию. Однако функция триггера не принимает никаких аргументов и имеет возвращаемое значение с типом триггера.

Ниже показан синтаксис создания функции триггера:

 Синтаксис:
СОЗДАТЬ ФУНКЦИЮ trigger_function () 
   RETURNS триггер AS

Функция триггера получает данные о своей вызывающей среде через специальную структуру, называемую TriggerData , содержащий набор локальных переменных. Определив функцию триггера, вы можете привязать ее к одному или нескольким событиям триггера, таким как INSERT , UPDATE и DELETE .

Пример:

Давайте посмотрим на пример создания нового триггера. В этом примере мы создадим новую таблицу с именем COMPANY следующим образом:

 СОЗДАТЬ НАСТОЛЬНУЮ КОМПАНИЮ (
   ID INT PRIMARY KEY NOT NULL,
   ТЕКСТ ИМЕНИ НЕ ПУСТО,
   AGE INT NOT NULL,
   АДРЕСНЫЙ СИМВОЛ (50),
   ЗАРПЛАТА РЕАЛЬНАЯ
);

При изменении имени сотрудника мы регистрируем изменения в отдельной таблице с именем AUDIT. :

 СОЗДАТЬ ТАБЛИЦУ АУДИТА (
   EMP_ID INT NOT NULL,
   ENTRY_DATE TEXT NOT NULL
);

Сначала определите новую функцию с именем auditlog ():

 СОЗДАТЬ ИЛИ ЗАМЕНИТЬ ФУНКЦИЮ auditlog () ВОЗВРАЩАЕТ ТРИГГЕР КАК $ example_table $
   НАЧИНАТЬ
      INSERT INTO AUDIT (EMP_ID, ENTRY_DATE) VALUES (new.ID, current_timestamp);
      ВОЗВРАТ НОВЫЙ;
   КОНЕЦ;
$ example_table $ LANGUAGE plpgsql;

Функция вставляет старую фамилию в АУДИТ таблица, включающая идентификатор сотрудника, фамилию и время изменения, если фамилия сотрудника изменилась. Во-вторых, привяжите функцию триггера к таблице сотрудников. Имя триггера - изменение имени s . Перед значением имени столбец обновляется, автоматически вызывается функция триггера для регистрации изменений.

 СОЗДАТЬ ТРИГГЕР example_trigger ПОСЛЕ ВСТАВКИ В КОМПАНИИ
ДЛЯ КАЖДОЙ СТРОКИ ВЫПОЛНИТЕ ПРОЦЕДУРУ auditlog ();

В-третьих, вставьте образцы данных для тестирования. Вставляем две строки в таблицу сотрудников.

 ВСТАВИТЬ В КОМПАНИЮ (ID, ИМЯ, ВОЗРАСТ, АДРЕС, ЗАРПЛАТУ)
ЦЕННОСТИ (1, «Раджу», 25, «Нью-Дели», 33000.00);

Чтобы изучить таблицу сотрудников, используйте следующий запрос:

 ВЫБЕРИТЕ * ОТ КОМПАНИИ;

Выход: