Лабораторна робота № 5

Тема роботи: Використання тригерів в базах даних в InterBase.

Мета роботи: Навчити створювати та використовувати тригери у середовищі сервера InterBase.

 

ОСНОВНІ ТЕОРЕТИЧНІ ВІДОМОСТІ.

  1. Означення тригера.

Тригер у InterBase – це особливий вид збереженої процедури, що виконується автоматично при вставці, чи вилученні або модифікації запису чи таблиці зображення (view). Тригери можуть "спрацьовувати" безпосередньо до чи відразу ж послу зазначеної події.

 

Як ви знаєте, SQL дає можливість вставляти, вилучати і модифікувати дані в таблицях бази даних за допомогою відповідних команд – INSERT, DELETE і UPDATE. Погодьтеся, що було б непогано мати можливість перехопити передану команду і що-небудь зробити з даними, які додаються, вилучаються чи змінюються. Наприклад, записати ці дані в спеціальну табличку, а заодно записати, хто і коли зробив операцію над даною таблицею. Чи відразу ж перевірити дані, що вставляються, на яку-небудь хитру умову, яку неможливо реалізувати за допомогою опції CHECK, і в залежності від результатів перевірки прийняти проведені зміни чи відкинути їх; змінити ці дані на підставі деякого запиту чи змінити дані в інших зв'язаних таблицях.

 

Для того, щоб виконувати які-небудь дії, зв'язані зі зміною даних у базі даних, і існують тригери.

 

Фактично тригер являє собою набір команд процедурної мови InterBase, що реалізується при виконанні операцій INSERT/DELETE/UPDATE. На відміну від збережуваних процедур, тригер ніколи нічого не повертає (та й кому повертати, адже тригер явно не викликається). По тій же причині він не має також вхідних параметрів, але замість них має контекстні змінні NEW і OLD. Ці змінні дозволяють одержати доступ до полів таблиці, до якої приєднаний тригер.

 

Тригеру призначена роль віртуального цензора, що переглядає "листи" і який вільний зробити усе, що завгодно, – пропустити їх незмінними, підправити їх, просигналізувати про помилки чи навіть "докласти про це" кому слід.

 

Тригер завжди прив'язаний до якоїсь певної таблиці чи зображення і може "перехоплювати" дані тільки цієї таблиці. Давайте розглянемо класифікацію тригерів і призначення кожного виду. Як уже було сказано, існує 3 основних SQL-операції, застосовні до даних, – INSERT/DELETE/UPDATE. Відповідно перший поділ тригерів – за операціями, що обслуговуються. Кожен конкретний тригер прив'язаний до якої-небудь операції, тобто тригер спрацьовує, коли в "його" таблиці відбувається дана операція.

 

Спрацьовування тригера може відбуватися як "до" так і "після" операції. Таким чином, ми одержуємо 6 можливих видів тригерів на таблицю – до і після кожної з трьох можливих SQL-операції.

Приклад тригера.

Давайте розглянемо простий приклад тригера, що спрацьовує ДО ВСТАВКИ в таблицю і заповнює поле первинного ключа.

 

CREATE TABLE Table_example (

ID INTEGER NOT NULL,

NAME VARCHAR (80),

PRICE_1 DOUBLE PRECISION,

CONSTRAINT pkTable PRIMARY KEY (ID));

 

Тут поле ID є первинним ключем і значення цього ключа повинні бути унікальними в межах таблиці. Щоб забезпечити виконання цієї вимоги, створимо генератор і тригер, що буде одержувати значення генератора і підставляти його в таблицю. Таким чином, у полі ID завжди будуть унікальні значення, тому що значення генератора буде збільшуватися щораз при звертанні до тригера. Отже, створюємо генератор:

 

CREATE GENERATOR GEN_TABLE_EXAMPLE_ID;

І встановлюємо його початкове значенняв одиницю:

 

SET GENERATOR GEN_TABLE_EXAMPLE_ID TO 1;

Тепер необхідно створити тригер. Треба сказати, що тригер, може містити у своєму тілі кілька операторів, розділених крапкою з комою. Тому вам необхідно скористатися командою зміни роздільника команд SET TERM. Ми ж будем наводити тексти тригерів без обрамлення командами зміни роздільника.

 

Отже, розглянемо текст нашого тригера:

CREATE TRIGGER Table_example_bi

FOR Table_example


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: