- •Мова адміністрування бд (мабд)
- •Група Data Control Language (dcl)
- •Група Transaction Control Language (tcl)
- •Група Cursor Control Language (ccl)
- •Пр иклади використання операторів адміністрування
- •Створення і ліквідація ролей
- •Передача привілеїв і ролей
- •Уявлення (View)
- •Поняття збереженої процедури
- •Збережені процедури в конкретних середовищах
- •Типи збережених процедур
- •Створення, зміна і видалення збережених процедур
- •Виконання збереженої процедури .
- •6.5. Визначення тригера в стандарті мови sql
- •Реалізація тригерів в середовищі ms sql Server
- •Типи тригерів
- •Програмування тригера
- •6.7. Технології використання sql
- •Поняття інтерактивного sql
- •Утиліта інтерактивного доступу isql субд Sybase sql Anywhere
- •Приклад використання інтерактивного sql в субд mysql
Реалізація тригерів в середовищі ms sql Server
Для реалізації СУБД MS SQL Server використовується наступний оператор створення або зміни тригера:
<Визначення_тригера>::=
{CREATE ALTER} TRIGGER ім’я тригера ON {ім 'я таблиці ім ’я просмотра }
[WITH ENCRYPTION] 7
{
{{FOR AFTER INSTEAD OF}
{[DELETE] [J [INSERT] [J[ UPDATE] }
[ WITH APPEND ]
[NOTFOR REPLICATION]
AS
sql_onepamop[. ..n]
}
{{FOR AFTER INSTEAD OF }{ [INSERT] [,]
[UPDATE] }
[WITH APPEND]
[NOTFOR REPLICATIONJ AS
{IF UPDATE(iM ’я_колонки)
[{AND OR} UPDATEfiM'я колонки)] [...n]
IF (COLUMNSJUPDA TESQ { оператор біт обробки} бітмасказмін)
{ оператор_біт порівняння }біт_маска [..п]} sql оператор [...п]
}
ШВІ
Тригер може бути створений тільки в поточній базі даних, але допускається звернення усередині тригера до інших баз даних, у тому числі і розташованих на віддаленому сервері. Розглянемо призначення аргументів з команди CREATE ALTER TRIGGER. Ім'я тригера повинне бути унікальним в межах бази даних. Додатково можна вказати ім'я власника. При вказівці аргумент)' WITH ENCRYPTION сервер виконує шифрування коду тригера, щоб ніхто, включаючи адміністратора, не міг дістати до нього доступ і прочитати його. Шифрування часто використовується для утаєння авторських алгоритмів обробки даних, що є інтелектуальною власністю програміста або комерційною таємницею.
Типи тригерів
У SQL Server існує два параметри, що визначають поведінку тригерів:
AFTER. Тригер виконується після успішного виконання команд, що викликали його. Якщо ж команди з якої-небудь причини не можуть бути успішно завершені, тригер не виконується. Слід зазначити, що зміни даних в результаті виконання запиту користувача і виконання тригера здійснюється в тілі однієї транзакції: якщо відбудеться відкочення тригера, то будуть відхилені і призначені для користувача зміни. Можна визначити декілька AFTER-тригерів для кожної операції (INSERT| UPDATE, DELETEі). Якщо для таблиці передбачено виконання декількох AFTER-тригерів, то за допомогою системної процедури sp_set trigger order, що зберігається, можна вказати, який з них виконуватиметься першим, а який останнім. За умовчанням в SQL Server всі тригери є AFTER-тригерами.
INSTEAD OF. Тригер викликається замість виконання команд. На відміну від AFTER-тригера INSTEAD OF-тригер може бути визначений як для таблиці, так і для перегляду. Для кожної операції
INSERT, UPDATE, DELETE можна визначити тільки один INSTEAD ОF-тригер.
Тригери розрізняють за типом команд, на які вони реагують.
Існує три типи тригерів:
INSERT TRIGGER - запускаються при спробі вставки даних за допомогою команди INSERT.
UPDATE TRIGGER - запускаються при спробі зміни даних за допомогою команди UPDATE.
DELETE TRIGGER - запускаються при спробі видалення даних за допомогою команди DELETE.
Конструкції І DELETE] [,] [INSERT] [,] [ UPDATE] і FOR AFTER INSTEAD OF } { [INSERT] [,] [UPDATE] визначають, на яку команду реагуватиме тригер. При його створенні повинна бути вказана хоч би одна команда. Допускається створення тригера, що реагує на дві або на всі три команди. Аргумент WITH APPEND дозволяє створювати декілька тригерів кожного типу. При створенні тригера з аргументом NOT FOR REPLICATION забороняється його запуск під час виконання модифікації таблиць механізмами реплікації. Конструкція AS sql оператор[...п] визначає набір SQL- операторів і команд, які будуть виконані при запуску тригера Відзначимо, що усередині тригера не допускається виконання ряду операцій, таких, наприклад, як:
створення, зміна і видалення бази даних;
відновлення резервної копії бази даних або журналу транзакцій. Виконання цих команд не дозволене, оскільки вони не можуть бути відмінені у разі відкочування транзакції, в якій виконується тригер. Ця заборона навряд може якимсь чином позначитися на функціональності створюваних тригерів. Важко знайти таку ситуацію, коли, наприклад, після зміни рядка таблиці потрібно буде виконати відновлення резервної копії журналу транзакцій.
