PostgreSQL

PostgreSQL Створити тригер після ВСТАВКИ / ОНОВЛЕННЯ / ВИДАЛЕННЯ

PostgreSQL Створити тригер після ВСТАВКИ / ОНОВЛЕННЯ / ВИДАЛЕННЯ
Кожного разу, коли визначена дія зміни (SQL INSERT, UPDATE, DELETE або TRUNCATE) виконується у визначеній таблиці, тригер - це набір серій подій, які виконуються автоматично. Тригери можуть бути використані для нав'язування ділових правил, автентифікації вхідної інформації та підтримки аудиторського сліду. Тригери SQL реалізовані відповідно до формату SQL. Він включає структури, що використовуються в декількох мовах програмування, що дозволяють оголошувати локальні змінні, контролювати перебіг процесу за допомогою оголошень, розподіляти результати операторів до змінних та обробляти помилки. Крім того, як тільки ви побудуєте тригер для чогось, наприклад таблиці, тригер негайно видаляється, як тільки таблиця видаляється. Ми розглянемо, як функціонують тригери PostgreSQL у цьому сегменті.

Синтаксис:

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

>> СТВОРИТИ триггер-ім'я_іменника [ДО | ПІСЛЯ | ЗАМЕСТО] ім'я події УВІМКНЕНО_таблиця [---- Логіка запуску];

Ось пояснення вищезазначеного загального запиту.

Щоб коротко зрозуміти концепцію тригера, запустіть оболонку PostgreSQL із програм. Змініть сервер, якщо хочете працювати на іншому сервері, або ж натисніть клавішу Enter з клавіатури. Додайте ім’я бази даних, над якою ви хочете працювати, інакше залиште його таким, яке воно є, і торкніться enter. Як бачите, зараз ми працюємо над портом 5432 за замовчуванням; Ви також можете змінити його. Після цього вкажіть ім’я користувача, відмінне від Postgres, якщо ви хочете працювати з іншим користувачем, або залиште його пустим і натисніть кнопку введення. Тепер ваша командна оболонка готова до використання.

TRIGGER за командою INSERT

Давайте розглянемо приклад тригера, коли команда INSERT була використана як подія тригера. Для цього ми повинні створити дві нові таблиці, наприклад.g., “Працевлаштування” та “аудит”. Таблиця "наймати" буде містити особисті записи співробітників конкретної компанії, а таблиця "аудит" - інформацію про те, коли співробітники приєдналися до компанії. Запити щодо створення таблиць наведені нижче.

>> СТВОРИТИ ТАБЛИЦЮ використовуйте (ІДЕНТИФІКАЦІЙНИЙ НЕ НУЛЬНИЙ ПЕРВИННИЙ КЛЮЧ, Ім'я VARCHAR (100) НЕ НУЛЬНИЙ, Вік VARCHAR (100) НЕ НУЛЬНИЙ, Зарплата VARCHAR (100) НЕ НУЛЬНИЙ);

>> СТВОРИТИ аудит ТАБЛИЦІ (empid INTEGER NOT NULL, entry_date VARCHAR (100) NOT NULL);

Вам потрібно створити процедуру, яка буде автоматично виконана або працюватиме, коли буде викликаний тригер. Він буде використаний у наступній команді CREATE TRIGGER. З наведеної нижче команди ви можете зрозуміти, що ми створюємо процедуру “auditlogfunc ()”, яка повертає тригер у вигляді змінної “$ examp_table $”. Функція починається з речення BEGIN, після чого йде оператор INSERT. Цей оператор INSERT вставляє автоматичний ідентифікатор та поточний час із використанням вбудованої функції в таблицю “аудит” і повертає цей результат TRIGGER.

Пора генерувати TRIGGER за допомогою команди CREATE TRIGGER. Ми створюємо тригер з назвою „emp_trig” у таблиці „Employe”. Пункт ПІСЛЯ ВСТАВЛЕННЯ означає, що цей тригер буде працювати лише після виконання команди вставки. ДЛЯ КОЖНОГО РЯДУ означає, що під час виконання кожної команди INSERT цей тригер викликає та виконує процедуру “auditlogfunc ()”, створену безпосередньо перед.

>> СТВОРИТИ TRIGGER emp_trig ПІСЛЯ ВСТАВЛЕННЯ УВІМКНУТИ використовувати КОЖНУ РЯДКОВУ ПРОЦЕДУРУ auditlogfunc ();

Настав час вставити деякі дані в таблицю "використовувати". Виконайте наведену нижче команду INSERT в оболонці.

>> ВСТАВИТИ В ПРАЦІ (ІД, Ім'я, Вік, зарплата) ЦІННОСТІ ('1', 'Paul', '34', '60000');

Погляньте на таблицю "наймати". Дані успішно додано за допомогою команди INSERT.

Тепер погляньте на таблицю "аудиту". Ви бачите, він також оновлюється через тригер “emp_trig” та auditlogfunc ().

TRIGGER за командою UPDATE

Зараз ми розглянемо приклад тригера, що використовує команду UPDATE як подію тригера. Ми повинні знову створити нову процедуру з іншою назвою «оновлення», як показано на зображенні. Ця процедура також включатиме записи до таблиці "аудиту" під час дзвінка.

Тепер створіть новий тригер з назвою „update_emp”, використовуючи команду CREATE TRIGGER. Це спрацює лише після виконання запиту UPDATE в таблиці, і процедура буде викликати процедуру «оновлення».

Оновіть таблицю “зайняти”, встановивши її ідентифікатор на “2”.

Отримати записи таблиці "використовувати", щоб переглянути зміни, як додано нижче.

Як ви можете бачити в таблиці “аудит”, вона була реорганізована в міру оновлення таблиці “працевлаштування”.

TRIGGER за командою DELETE

Відкрийте pgAdmin 4 із додатків, щоб працювати на графічному інтерфейсі PostgreSQL. Під схемою «тест» ви відкриєте список таблиць. Створіть нову таблицю “emp” і ту саму таблицю “аудиту”.

Цього разу ми будемо викликати команду тригера командою DELETE. Нижче наведена таблиця “emp” з деякими записами.

Ось таблиця аудиту з попередніми двома оновленнями.

Створіть процедуру з назвою “Del ()”, щоб запустити вставку в таблицю “аудит” після видалення записів із таблиці “emp”.

Створіть тригер “del_trig”, використовуючи запит CREATE TRIGGER. Цей тригер буде виконувати процедуру “Del”, коли в таблиці “emp” буде виконуватися деяке речення DELETE.

Видалимо запис із таблиці “emp”, де “id” працівника “5”. Він видалить один рядок із таблиці “emp”.

Візьміть записи таблиці “emp” і подивіться на них. Ви можете побачити, що рядок видалено, де “ідентифікатором” було “5”.

Тепер витягніть записи таблиці “аудит”, і ви помітите, що вони були оновлені, оскільки операція ВИДАЛЕННЯ була виконана в таблиці “emp”.

Висновок:

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

Як показати накладання екранного меню в повноекранному додатку та іграх для Linux
Гра у повноекранні ігри або використання додатків у повноекранному повноекранному режимі може відключити від відповідної системної інформації, видимої...
Топ 5 карт для захоплення ігор
Ми всі бачили і любили потокові ігри на YouTube. PewDiePie, Jakesepticye та Markiplier - лише деякі з найкращих геймерів, які заробили мільйони, заван...
Як розробити гру на Linux
Десять років тому не так багато користувачів Linux передбачали, що їх улюблена операційна система колись стане популярною ігровою платформою для комер...