Читайте также:
|
|
Ситуаційно-орієнтовані обмеження задаються у вигляді вимог, яким мають відповідати послідовні стани бази даних, тобто завдяки таким обмеженням фіксуються допустимі переходи бази даних з одного стану в інший.
Приклад можливих переходів значення атрибута Сі мейнийстан можна побачити на рис. 8.1.
Рис. 8.1. Можливі переходи значення атрибута «Сімейний стан»
Для специфікації ситуаційно-орієнтованих обмежень застосовуються ті самі засоби, що й для специфікації структурних обмежень. Окрім того, використовується можливість посилатися на значення бази даних до її оновлення й після.
Це досягається за допомогою уточнюючих фраз OLD та NEW, що вживаються в посиланнях на значення, які зберігалися в базі даних до й після зміни її стану.
Зазвичай для опису динамічних обмежень використовуються тригери, які ініціюються під час зміни стану бази даних командами INSERT, UPDATE та DELETE. Наприклад, допустимі переходи атрибута Сімейний_стан можуть бути специфіковані у вигляді такого тригера:
CREATE TRIGGER Особа_Ci мейний_Стан
BEFORE INSERT, UPDATE ON ОСОБА
WHEN (ОLD.Сімейний_стан = 'Неодружений' AND
NEW.Сімейний_стан IN('Розлучений', 'Вдівець')) OR
(ОLD.Сімейний_стан = 'Одружений' AND
NEW. Ciмейний_стан = 'Неодружений') O R
(ОLD.Сімейний_стан = 'Розлучений' AND
NEW.Сімейний_стан IN('Неодружений'.'Вдівець')) OR
(ОLD.Сімейний_стан = 'Вдівець' AND
NEW. Сімейний_стан IN ('Неодружений'.'Розлучений')
BEGIN
ROLLBACK TRANSACTION
END
Це обмеження можна специфікувати в означенні таблиці ОСОБА за умови, що допускається використання кваліфікаторів NEW і OLD:
Дата добавления: 2014-12-15; просмотров: 77 | Поможем написать вашу работу | Нарушение авторских прав |