Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТППС / ТППС-лаб-2012-укр.docx
Скачиваний:
36
Добавлен:
05.06.2015
Размер:
1.11 Mб
Скачать

Збережені процедури

Збережені процедури (storedprocedure) вперше були введені в СУБД Sybase і зараз становлять невід'ємну частину всіх основних комерційних СУБД. Збережені процедури перетворюють базу даних в активну програмовану систему.

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

Рис. 4.4 є ілюстрацією переваг виклику клієнтською програмою збереженої процедури замість відправлення повного запиту серверу. Запит, сформований у клієнтській програмі, пересилається серверу по мережі.

Рис. 4.4. Порівняння виклику з клієнтської програми SQL-запиту і збереженої процедури

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

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

Повноваження користувача уважно аналізуються так само, як і у випадку SQL-запиту. Усі фактичні параметри підставляються замість формальних параметрів, і збережена процедура виконується. Результат повертається програмі, що викликається.

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

Тригери

Тригери являють собою особливий вид збереженої процедури, яку не можна викликати, - вони або запускають себе, або додають (insert), обновляють (update) або видаляють (delete) події з таблиці. Це значить, що кожній таблиці можна зіставити до трьох тригерів. Зазвичай, у деяких системах це так і є (наприклад, Sybase). В інших системах (наприклад, Oracle) виділяються додаткові варіанти подій, що приводить до можливості тримати для кожної таблиці більше трьох тригерів. (Проте, доступність великої кількості типів тригерів не надає більшої виразної сили тригерним програмам).

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

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

Соседние файлы в папке ТППС