АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Тригери (Triggers)

З будь-якою подією, що викликає зміну вмісту таблиці, можна зв’язати супутню дію (тригер), яку СУБД повинна виконувати при кожному виникненні події. Тригер - це група операторів мови SQL, які автоматично виконуються при вставці, модифікації або видаленні запису.

В СУБД InterBase можна створювати тригери, що працюють при наступних шести умовах:

• до вставки запису (BEFORE INSERT);

• після вставки запису (AFTER INSERT);

• до видалення запису (BEFORE DELETE);

• після видалення запису (AFTER DELETE);

• до модифікації запису (BEFORE UPDATE);

• після модифікації запису (AFTER UPDATE).

В Firebird 1.5 тригер може спрацьовувати при виникненні однієї з декількох подій. Тригери можуть викликати виконання процедур, що зберігаються, виконувати різні перевірки та генерувати виключення. Зазвичай тригери використовуються для задання складних правил контролю цілісності бази даних, які неможливо реалізувати за допомогою обмежень.

Недоліком тригерів є їх вплив на продуктивність операцій з базою даних.

Синтаксис оператора створення тригера: CREATE TRIGGER Імя FOR Таблиця

[ACTIVE | INACTIVE]

{BEFORE |AFTER}

<операція> [OR <операція> [OR <операція>] ]

[POSITION Номер]

AS [<список змінних>] <блок>;

<операція> = {INSERT | UPDATE |DELETE}

<список змінних> =

DECLARE [VARIABLE] Змінна <тип даних>;

[DECLARE [VARIABLE] Змінна <тип даних>;...]

<блок> = BEGIN

<складений оператор> [<складений оператор>... ] END

<складений оператор> = <блок> | Оператор;

Параметри, що входять в цей оператор, представлені таблиці 5.1.

Таблиця 5.1.

Опис параметрів оператора створення тригера

 

Параметр Опис
Ім’я Унікальна назва тригера.
Таблиця Назва таблиці або перегляду, для яких створюється тригер
ACTIVE INACTIVE Вказує, чи буде працювати тригер
BEFORE AFTER Обов’язковий параметр, що показує, коли буде спрацьовувати триггер
INSERT DELETE UPDATE | Одна з подій, на які буде спрацьовувати тригер
POSITION Номер Визначає порядок спрацьовування тригера, коли є декілька тригерів, що реагують на одну й ту ж подію. Номер - ціле число між 0 і 32767
DECLARE [VARIABLE] Змінна <тип даних> Опис локальної змінної, яку можна буде використовувати тільки в цьому тригері
Оператор Будь-який одиночний оператор мови процедур та тригерів, що зберігаються InterBase

Всередині тіла тригера доступні дві контекстні змінні NEW та OLD, які дозволяють одержувати доступ до нових і старих значень полів запису, при зміні якого був викликаний тригер.

Приклад генератора і тригера:

CREATE GENERATOR EMP_NO_GEN;

CREATE TRIGGER SET_EMP_NO FOR EMPLOYEE

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

IF (NEW.EMP_NO IS NULL) THEN

NEW.EMP_NO = GEN_ID(EMP_NO_GEN, 1);

END;


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)