Синтаксис:
Нижче наведено простий синтаксис для створення тригера:
>> СТВОРИТИ триггер-ім'я_іменника [ДО | ПІСЛЯ | ЗАМЕСТО] ім'я події УВІМКНЕНО_таблиця [---- Логіка запуску];Ось пояснення вищезазначеного загального запиту.
- Trigger_name: Назва тригера
- ДО, ПІСЛЯ, ЗАМІСТЬ: Умови, які визначають, коли тригер буде активним
- Ім'я_події: Назва події, яка може спричинити активатор (це може бути: ВСТАВКА, ОНОВЛЕННЯ або ВИДАЛЕННЯ)
- Назва таблиці: Вказує таблицю, на основі якої буде побудований тригер
Щоб коротко зрозуміти концепцію тригера, запустіть оболонку 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.