Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Посібник Мова SQL кредитно-модульний.doc
Скачиваний:
35
Добавлен:
01.05.2015
Размер:
1.25 Mб
Скачать

Тема 7. Створення|створіння|тригерів|трігерів|і керування ними

Тригери— це особливий клас збережених процедур, які автоматично виконубться під час модифікації даних або після неї. Вони спрацьовують при виконанні трьох команд:UPDATE, INSERT и DELETE. Тригери використовуються для забезпечення цілісності даних і реалізації складнох бізнес-логіки.

Настав час познайомится з|із|методами створення|створіння|тригерів|трігерів|і керування ними. Як правило, для створення|створіння|тригерів|трігерів|і керування ними використовується вікно редактору запитів|. Для створення|створіння|тригера|трігера|служить операторCREATE| TRIGGER|.В процесі створення|створіння| тригер|трігер| прив'язується до таблиці або відображення|вистави|.Створений тригер|трігер|можна модифікувати засобами|коштами|оператораALTER| TRIGGER|. Перейменування і огляд тригерів|трігерів|здійснюється|за допомогою системних процедур, що зберігаються, абоSQL Server Management Studio|.

Для видалення|віддалення|тригера|трігера|використовується операторDROP| TRIGGER|, а для включення|приєднання|і виключення тригерів|трігерів|— операторALTER| TABLE|.

1. Створення|створіння|тригерів|трігерів|за допомогою мови|язика|transact-sql|

При використанні оператора CREATE| TRIGGER|необхідно задати ім'я тригера|трігера|, таблицю або відображення|виставу|, до якого буде прив'язаний тригер|трігер|, клас (INSTEAD| OF|абоAFTER|), подія або події, що викликають|спричиняють|спрацьовування тригера|трігера|, і завдання|задачу|, яке він повинен виконувати. Також можна (але|та|не обов'язково) задати необхідність реплікації або шифрування тригера|трігера|.

Основні конструкції оператора CREATE| TRIGGER|:

CREATE TRIGGER ім’я__тригера

ON ім’я_таблиці або ім’я_відображення

FOR клас_триггера і тип(и) _тригера

AS оператори TRANSACT-SQL

Конструкція CREATE| TRIGGER|

Тригер створюється конструкцією CREATE TRIGGER, за якою слідує ім'я тригера.Тригери не допускають вказівки імені бази даних у вигляді префікса імені об'єкту. Тому перед створенням тригера необхідно вибрати потрібну базу даних за допомогою конструкціїUSEім’я_базы_данных і ключового словаGO. Ключове слово GO потрібне, посколькуоператорCREATE TRIGGERмає бути першим в пакеті. Право на створення тригерів за умовчанням належить власникові таблиці. Краще створювати таблиці, тригери і інші об'єкти бази даних так, щоб їх власником бувdbo. Наприклад, наступний код TRANSACT-SQL дозволяє створити тригерAlerterв базі данихBookShopDB:

USE BookShopDB

GO

CREATE TRIGGER dbo.alerter

Імена тригерів|трігерів|повинні підкорятися правилам, визначеним для ідентифікаторів. Наприклад, щоб|аби|створити тригер|трігер|Alerter| for| the| Employees| Table|, слід укласти його ім'я в квадратні дужки:

CREATE TRIGGER dbo[alerter for employees table]

При адмініструванні тригерів|трігерів|, наприклад при їх видаленні|віддаленні|, необхідно слідувати|прямувати|правилам для ідентифікаторів.

Конструкція on|

Тригер|трігер|необхідно прив'язати до таблиці або відображення|вистави|.Конструкція ON| дозволяє вказати таку таблицю або відображення|виставу|, які після|потім| прив'язки називаються таблицею тригера|трігера| або представленням тригера|трігера| відповідно. Для узгодженості|погодженості|після|потім|конструкціїON|слід вказувати|вказувати|власника таблиці або відображення|вистави|. Наприклад, наступний|такий|код TRANSACT-SQL|прив'язує тригер|трігер|Alerter| до таблиціEmployees|(обидва об'єкти, тригер|трігер|і таблиця, належатьdbo|):

CREATE TRIGGER dbo.alerter

ON dbo.employees

Будь-який тригер|трігер|можна прив'язати тільки|лише|до однієї таблиці або відображення|вистави|. Щоб|аби|прив'язати до іншої таблиці тригер|трігер|, що виконує те ж саме завдання|задачу|, слід створити новий тригер|трігер|з|із|іншим ім'ям, але|та|з|із|тією ж самою бізнес-логікою і прив'язати його до іншої таблиці.AFTER-триггеры|(цей клас заданий за умовчанням) дозволено прив'язувати тільки|лише|до таблиць, а тригери|трігери|нового класуINSTEAD| OF|— як до таблиць, так і до відображень|вистав|.