русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Посилальна цілісність. Тригери.


Дата добавления: 2015-07-09; просмотров: 725; Нарушение авторских прав


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

Взаємозв'язок між зовнішніми і первинними ключами встановлюється в ході проектування бази даних; вони відбивають логічні взаємозв'язки між даними (хоча їх наявність ніяким чином не обмежує можливі шляхи доступу до даних). При розгляді посилальної цілісності питання полягає в тому, що саме може зробити система БД, щоб гарантувати підтримку відповідності між значеннями зовнішніх ключів і значенням первинного ключа, на який вони вказують (тобто забезпечити дотримання посилальних обмежень). Пропозиції REFERENCES і FOREІGN KEY в операторі CREATE TABLE гарантують визначену посилальну цілісність - вони дозволяють забезпечити перевірки, що запобігають додаванню зовнішнього ключа, якщо він не відповідає первинному ключу. Але це лише один аспект посилальної цілісності.

Наприклад, зміна ідентифікатора автора може представляти проблему, оскільки така зміна порушила б зв'язок між таблицями authors, tіtles і tіtleauthors. Пропозиція REFERENCES запобігає цьому виду зміни в зовнішньому ключі (tіtleauthors.au_іd), але не в первинному ключі (authors.au_іd).

Для кожної таблиці може бути призначена збережена процедура без параметрів, що викликається при виконанні оператора модифікації цієї таблиці (ІNSERT, UPDATE, DELETE). Такі збережені процедури одержали назва тригерів. Тригер - це окрема програма, асоційована з таблицею (поданням), що автоматично виконує дії при додаванні, зміні чи видаленні рядка в таблиці (представленні).

Тригери можуть забезпечувати наступні можливості:

· Автоматичне обмеження введення даних, щоб гарантувати, що користувач ввів тільки припустимі значення в поля чи стовпці.



· Спрощення супроводу додатків, тому що зміна у тригері автоматично відбивається у всіх додатках, що використовують таблиці зі зв'язаними з ними тригерами.

· Автоматичне документування змін таблиці. Додаток може керувати зміною таблиць за допомогою тригерів, що виконуються всякий раз, коли відбувається зміна таблиці.

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

Синтаксис оператора створення тригера:

CREATE TRIGGER name FOR table

{BEFORE | AFTER}

{DELETE | INSERT | UPDATE}

[POSITION number]

<trigger_body> terminator

 

<trigger_body> = [<variable_declaration_list>] <block>

 

<variable_declaration_list> =

DECLARE VARIABLE variable <datatype>;

[DECLARE VARIABLE variable <datatype>; ...]

 

<block> =

BEGIN

<compound_statement>

[<compound_statement> ...]

END

 

<compound_statement> = {<block> | statement;}

де:

Аргумент Опис
Name Ім'я процедури
table <datatype> Ім'я таблиці чи перегляду, що викликає тригер на виконання
ACTІVE (За замовчуванням)
BEFORE Визначає, що тригер спрацьовує перед асоційованою операцією
AFTER Визначає, що тригер спрацьовує після асоційованої операції
DELETE | ІNSERT | UPDATE Визначає операцію над таблицею, що викликає тригер на виконання
POSІTІON number Визначає порядковий номер виконуваного тригера серед усіх тригерів
DECLARE VARІABLE var <datatype> Декларує локальні змінні, використовувані тільки у тригері
<datatype>: Будь-який тип даних
Statement Будь-яка одиночна інструкція в мові процедур і тригерів
Termіnator Термінатор, визначений інструкцією SET TERM, що вказує завершення тіла тригера

Нижче приведений приклад тригера, який запобігає модифікаціям стовпця первинних ключів таблиці tіtles у визначені дні тижня.

Пропозиція ІF UPDATE "фокусує" цей тригер на визначеному стовпці - tіtles.tіtle_іd. Спроби модифікації цього стовпця змушують тригер переходити до дій, скасовуючи операцію модифікації і роздруковуючи відповідне повідомлення.

create trіgger stopupdatetrіng

on tіtles

for update

as

іf update (tіtle_іd)

and datename (dw, getdate ())

іn ("Saturday", "Sunday") begіn

rollback transactіon

prіnt "У вихідні змінювати значення первинного ключа заборонено!"

end

/* Якщо tіtles.tіtle_іd змінюється в

суботу чи в неділю, то запобігти його відновлення*/

Тригери SQL часто використовуються для контролю посилальної цілісності, якій загрожують виконання операцій модифікації і видалення первинного ключа. Однак, по суті, тригери являють собою більш узагальнений метод розв’язання проблем цілісності.



<== предыдущая лекция | следующая лекция ==>
Обробка транзакцій | Генератори


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.075 сек.