triggers pl sql tutorial with example programs
Дізнайтеся все про тригери в PL SQL, їх типи, використання та переваги:
В PL SQL транзакції підручник з Серія PL / SQL , ми дізналися про операції COMMIT, ROLLBACK та SAVEPOINTS.
У цій статті ми розглянемо тригери в PL SQL та їх переваги, типи та використання. Ми обговоримо, як створювати, запускати, вмикати та вимикати тригери PL / SQL за допомогою прикладних програм.
Почнемо з обговорення !!
Що ви дізнаєтесь:
Тригери в PL / SQL
Збережена програма, яка запускається за замовчуванням або за якимись подіями, називається тригером.
Тригер виконується внаслідок перелічених нижче обставин:
- За допомогою оператора DDL (Мова визначення даних), наприклад DROP, ALTER або CREATE.
- За допомогою DML (Data Manipulation Language), наприклад UPDATE, INSERT або DELETE.
- За допомогою дії з базою даних, як ВИМИКНЕННЯ, ЗАПУСК, ВХІД і ВХІД.
Тригер можна встановити на схемі, поданні або базі даних, до якої приєднана подія.
Переваги тригерів
Вони перелічені нижче:
- Можливість забезпечення довідкової цілісності.
- Можливість моніторингу.
- Можливість реєструвати та зберігати дані про доступ до таблиць.
- Можливість зупиняти недійсні транзакції.
- Можливість застосування функцій безпеки.
- Можливість створювати похідні значення стовпців за замовчуванням.
Використання тригерів
Вони перелічені нижче:
- Запобігає неправильним операціям.
- Накопичує інформацію про використання таблиці.
- Відстежуйте важливу інформацію.
Типи тригерів у PL / SQL
Тригери можна класифікувати за параметрами. Типи тригерів перелічені нижче:
# 1) Категоризація на тригерному рівні.
- РУКОВИЙ рівень рівня: Він виконується для кожного запису, який оновлено за допомогою оператора DML.
- STATEMENT Тригер рівня: Він виконується лише один раз за допомогою оператора події.
# 2) Категоризація за часом синхронізації.
- ДО тригера: Він виконується до конкретної події, що відбулася.
- ПІСЛЯ тригера: Він виконується після конкретної події, що відбулася.
- ЗАМІСТО тригера: Це особливий тип тригера, і він виконується для кожного запису, який оновлено за допомогою оператора DML.
# 3) Категоризація події тригера.
- Тригер DML: Він виконується, якщо виконується подія DML, як UPDATE, INSERT або DELETE.
- Тригер DDL: Він виконується, якщо виконується подія DDL, наприклад DROP, ALTER або CREATE.
- Тригер DATABASE: Він виконується, якщо відбулася подія бази даних, наприклад, SHUTDOWN, STARTUP, LOGOFF і LOGON.
Створити тригери
Синтаксис для створення тригера:
CREATE [OR REPLACE ] TRIGGER trigger_n BEFORE DELETE [OF column_n] ON table_n [REFERENCING OLD AS o NEW AS n] [FOR EACH ROW] WHEN (condition) DECLARE <> BEGIN < > EXCEPTION <> END;
Ось,
- СТВОРИТИ [АБО ЗАМІНИТИ] TRIGGER trigger_n - Це призначено для створення, заміни або оновлення тригера, який має ім’я trigger_n.
- ПІСЛЯ - Це визначає час, коли буде спрацьовано спусковий гачок. INSTEAD OF призначений для створення тригера, який має вигляд.
- ВИДАЛИТИ - Це для виконання дій DML.
- [OF column_n] - Це для згадування назви стовпця, яку слід змінити.
- [ON table_n] - Це для згадування назви таблиці, яка прикріплена до тригера.
- [ПОСИЛАННЯ ДО СТАРОГО ЯК НОВОГО] - Це для посилання на старі та нові значення за допомогою оператора DML, наприклад UPDATE, INSERT або DELETE.
- [ЗА КОЖНИМ РЯДКОМ] - Це визначає тригер на рівні рядка, тобто тригер буде спрацьовувати для кожного зміненого рядка, інакше тригер спрацьовує лише один раз, коли виконується оператор SQL, який відомий як тригер рівня таблиці.
- КОЛИ (умова) - Це дає умову для рядків, для яких буде запущений тригер. Це стосується лише тригерів рівня рядка.
Знову розглянемо таблицю, яка названа УЧЕНЬ .
Давайте зараз створимо тригер на рівні рядка для таблиці STUDENT, який буде виконуватися оператором DML, таким як UPDATE, INSERT або DELETE в цій таблиці. Тригер обчислить і покаже різницю у віці між поточними та попередніми значеннями.
Впровадження коду для створення тригера:
CREATE OR REPLACE TRIGGER age_changes BEFORE DELETE OR INSERT OR UPDATE ON student FOR EACH ROW WHEN (NEW.CODE > 0) DECLARE age_diff number; BEGIN age_diff := :NEW.age - :OLD.age; dbms_output.put_line ('Prevoius age: ' || : OLD.age); dbms_output.put_line ('Current age: ' || : NEW.age); dbms_output.put_line ('Age difference: ' || age_diff); END; /
Вивід вищевказаного коду:
Вищезазначений код має деякі важливі характеристики. Вони перелічені нижче:
- Для тригера рівня таблиці недоступні СТАРА та НОВА адреси. Ми можемо використовувати ці посилання для активаторів рівня запису.
- Якщо ми хочемо застосувати інший запит до того самого тригера, тоді нам потрібно використовувати ключове слово ПІСЛЯ як тригер, який може знову модифікувати таблицю лише після того, як попередні модифікації застосовані належним чином.
- Обговорюваний вище тригер виконується перед будь-якою дією ВИДАЛИТИ, ОНОВИТИ або ВСТАВИТИ в таблиці. Однак ми також можемо розробити тригер, який запускається також за одну операцію ( наприклад, ПІСЛЯ ВСТАВКИ, яка буде запускати тригер щоразу, коли запис буде вставлений за допомогою операції ВСТАВЛЕННЯ в таблицю).
Запуск тригерів у PL SQL
Щоб запустити наведений вище тригер, нам потрібно виконати будь-яку операцію DML, наприклад ВИДАЛИТИ, ВСТАВИТИ або ОНОВИТИ на столі. Давайте знову вставимо деякі значення в таблицю Студента за допомогою наведеного нижче запиту:
INSERT INTO STUDENT VALUES (4, 'MARY', 16, 97);
Після того, як операція INSERT буде завершена в таблиці Студента, тригер зміни віку виконується.
Вихід коду запиту:
Оскільки створено новий запис, а попередній вік недоступний, попередній вік та Різниця у віці обчислення є нульовим у наведеному вище результаті.
Тепер давайте змінити запис за допомогою оператора UPDATE за допомогою наведеного нижче запиту:
UPDATE student SET age = age + 1 WHERE code = 7;
Після завершення операції UPDATE в таблиці Student запускається зміни віку виконується.
Результат наведеного вище запиту:
НОВА І СТАРА стаття
Нове речення використовується для зберігання нового значення для стовпців таблиці для виконання тригера. Він використовується в тригерах рівня запису. Старе речення використовується для зберігання старого значення для стовпців таблиці для виконання тригера. Він також використовується в тригерах рівня запису.
Таким чином, новий та старий речення використовуються для утримання та посилання на нові та старі значення в тілі тригера.
Складений тригер
Складений тригер використовується для визначення операцій для всіх точок синхронізації в тілі тригера. Це дає можливість об’єднати всі дії за різний час в одному тілі тригера.
Різні моменти часу перелічені нижче:
- ПІСЛЯ ЗАЯВИ рівень
- ПЕРЕД РЯДКОМ рівнем
- ПІСЛЯ РЯДкового рівня
- ДО РІВНЯ ЗАЯВИ
Вимкнути та ввімкнути тригер
Ми можемо ввімкнути та вимкнути тригер за допомогою оператора DDL ALTER.
Синтаксис:
ALTER TRIGGER trigger_n [ENABLE|DISABLE];
Тут trigger_n - це назва тригера, який ми хочемо ввімкнути або вимкнути.
Тепер відключимо тригер за допомогою наведеного нижче запиту:
ALTER TRIGGER STUDENT_DETAILS DISABLE;
Вихід коду запиту:
Тепер дозвольмо включити той самий тригер за допомогою наведеного нижче запиту:
ALTER TRIGGER STUDENT_DETAILS ENABLE;
Вихід коду запиту:
Часті запитання та відповіді
Q # 1) Скільки типів тригерів існує в PL SQL?
Відповідь: У PL / SQL є два типи тригерів. Вони є тригером рівня рядка та тригером рівня виписки.
Q # 2) Який тип тригера використовує старі та нові кваліфікатори?
питання співбесіди для відпочинку та відповіді для досвідчених
Відповідь: Старі та нові кваліфікатори можна використовувати лише з тригерами рівня рядка. Вони не сумісні з тригерами рівня виписки.
Q # 3) Яка різниця між тригером новий і тригером старий?
Відповідь: Новий тригер надає список нових версій об'єктів запису. Старий тригер надає список старих версій об'єктів запису.
Q # 4) Що таке тригер на рівні рядка в PL SQL?
Відповідь: Тригер рівня рядка запускається для рядка лише один раз через подію. Наприклад, якщо видалення розглядається як подія запуску для таблиці, оператор видалення впливає на два рядки, тоді тригер запускається два рази.
Q # 5) Що таке тригер? Поясніть на прикладі.
Відповідь: Тригер - це збережена процедура, яка запускається за замовчуванням, якщо інцидент трапляється в базі даних. Наприклад, якщо рядок вставлено в таблицю або ми змінюємо деякі значення в таблиці.
Q # 6) Які подальші тригери?
Відповідь: Тригери after спрацьовують після виконання оператора DML, але до фіксації в базі даних. Він також здатний відмовити свою дію.
Висновок
У цьому підручнику ми обговорили деякі основні концепції тригерів у PL SQL, які є важливими для їх використання під час програмування. Ми розглянули наступні теми, перелічені нижче:
- Тригери.
- Види тригерів.
- Різні операції над тригерами.
<< PREV Tutorial | НАСТУПНИЙ підручник >>