PostgreSQL

PostgreSQL Создать триггер после INSERT / UPDATE / DELETE

PostgreSQL Создать триггер после INSERT / UPDATE / DELETE
Каждый раз, когда определенное действие изменения (объявление SQL INSERT, UPDATE, DELETE или TRUNCATE) выполняется в определенной таблице, триггер представляет собой серию событий, которые выполняются автоматически. Триггеры могут использоваться для введения бизнес-правил, аутентификации входной информации и ведения контрольного журнала. SQL-триггеры реализованы в соответствии с форматом SQL. Он включает структуры, используемые в нескольких языках программирования, позволяющие объявлять локальные переменные, отслеживать ход процесса с помощью объявлений, распределять результаты операторов по переменным и обрабатывать ошибки. Кроме того, как только вы создаете триггер для чего-то, например таблицы, триггер немедленно удаляется, как только удаляется таблица. Мы рассмотрим, как работают триггеры PostgreSQL в этом сегменте.

Синтаксис:

Ниже приводится простой синтаксис для создания триггера:

>> CREATE TRIGGER имя-триггера [BEFORE | AFTER | INSTEAD OF] имя-события ON имя_таблицы [---- Логика триггера];

Вот объяснение вышеуказанного общего запроса.

Чтобы кратко понять концепцию триггера, запустите оболочку PostgreSQL из приложений. Измените сервер, если вы хотите работать на другом сервере, или нажмите Enter с клавиатуры. Добавьте имя базы данных, над которой хотите работать, в противном случае оставьте его как есть и нажмите ввод. Как видите, в настоящее время мы работаем с портом 5432 по умолчанию; вы также можете изменить это. После этого укажите имя пользователя, отличное от Postgres, если вы хотите работать с другим пользователем, или оставьте его пустым и нажмите кнопку ввода. Теперь ваша командная оболочка готова к использованию.

TRIGGER по команде INSERT

Давайте посмотрим на пример триггера, когда команда INSERT использовалась в качестве триггерного события. Для этого нам нужно создать две новые таблицы, e.грамм., «Нанять» и «аудит». Таблица «нанять» будет содержать личные записи сотрудников из конкретной компании, а таблица «аудит» будет содержать информацию о том, когда сотрудники присоединились к компании. Запросы для создания таблиц приведены ниже.

>> CREATE TABLE using (ID INTEGER NOT NULL PRIMARY KEY, имя VARCHAR (100) NOT NULL, возраст VARCHAR (100) NOT NULL, зарплата VARCHAR (100) NOT NULL);

>> CREATE TABLE audit (empid INTEGER NOT NULL, entry_date VARCHAR (100) NOT NULL);

Вам необходимо создать процедуру, которая будет автоматически выполняться или работать при вызове триггера. Он будет использован в следующей команде CREATE TRIGGER. Из приведенной ниже команды вы можете понять, что мы создали процедуру «auditlogfunc ()», которая будет возвращать триггер как переменную «$ examp_table $». Функция начинается с предложения BEGIN, за которым следует оператор INSERT. Этот оператор INSERT вставляет автоматический идентификатор и текущую дату и время с помощью встроенной функции в таблицу «audit» и возвращает этот результат в TRIGGER.

Пришло время сгенерировать ТРИГГЕР с помощью команды СОЗДАТЬ ТРИГГЕР. Мы создаем триггер с именем «emp_trig» в таблице «Employ». Предложение AFTER INSERT ON означает, что этот триггер будет работать только после выполнения команды вставки. FOR EACH ROW означает, что при выполнении каждой команды INSERT этот триггер будет вызывать и выполнять процедуру auditlogfunc (), созданную непосредственно перед.

>> СОЗДАТЬ ТРИГГЕР emp_trig ПОСЛЕ ВСТАВКИ ВКЛЮЧИТЬ ДЛЯ КАЖДОЙ СТРОКИ ВЫПОЛНИТЬ ПРОЦЕДУРУ auditlogfunc ();

Пришло время вставить данные в таблицу «нанять». Выполните приведенную ниже команду INSERT в оболочке.

>> ВСТАВИТЬ В ЗНАЧЕНИЯ (ID, Имя, Возраст, Зарплата) ('1', 'Paul', '34', '60000');

Взгляните на таблицу «нанять». Данные были успешно добавлены с помощью команды INSERT.

Теперь взгляните на таблицу «аудита». Как видите, он также обновляется с помощью триггера emp_trig и auditlogfunc ().

TRIGGER по команде UPDATE

Теперь мы рассмотрим пример триггера, использующего команду UPDATE в качестве триггерного события. Мы должны снова создать новую процедуру с другим именем «обновление», как показано на изображении. Эта процедура также будет вставлять записи в таблицу аудита при вызове.

Теперь создайте новый триггер с именем «update_emp», используя команду CREATE TRIGGER. Это будет работать только после выполнения запроса UPDATE для таблицы, используемой, и вызовет процедуру «update».

Обновите таблицу «Нанять», установив для нее идентификатор «2».

Получите записи из таблицы «Использовать», чтобы просмотреть изменения, как показано ниже.

Как видно из таблицы «аудит», она была реорганизована, так как таблица «нанять» была обновлена.

TRIGGER по команде DELETE

Откройте pgAdmin 4 из приложений для работы с графическим интерфейсом PostgreSQL. Под схемой «test» вы найдете список таблиц. Создайте новую таблицу «emp» и такую ​​же таблицу «audit».

На этот раз мы вызовем команду триггера командой DELETE. Ниже представлена ​​таблица «emp» с некоторыми записями.

Вот таблица аудита с двумя предыдущими обновлениями.

Создайте процедуру с именем «Del ()» для запуска вставки в таблицу «audit» после удаления записей из таблицы «emp».

Создайте триггер del_trig с помощью запроса CREATE TRIGGER. Этот триггер выполнит процедуру «Del», когда какое-либо предложение DELETE будет выполнено для таблицы «emp».

Удалим запись из таблицы «emp», где идентификатор сотрудника равен «5». Он удалит одну строку из таблицы «emp».

Получите записи таблицы «emp» и посмотрите на нее. Вы можете видеть, что строка была удалена, где «id» был «5».

Теперь извлеките записи таблицы «audit», и вы заметите, что она была обновлена, потому что операция DELETE была выполнена для таблицы «emp».

Заключение:

Мы сделали почти все важные примеры, чтобы понять концепцию TRIGGER при выполнении операций INSERT, UPDATE и DELETE.

Как записать и транслировать игровую сессию в Linux
В прошлом игры считались только хобби, но со временем игровая индустрия увидела огромный рост с точки зрения технологий и количества игроков. Игровая ...
Лучшие игры с отслеживанием рук
Oculus Quest недавно представил отличную идею отслеживания рук без контроллеров. С постоянно растущим числом игр и действий, которые осуществляются фо...
Как показать наложение OSD в полноэкранных приложениях и играх Linux
Игра в полноэкранные игры или использование приложений в полноэкранном режиме без отвлекающих факторов может отрезать вас от соответствующей системной...