Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Средства языка SQL. Триггерные процедуры




Триггерные процедуры

Ссылочные операции

Рассмотрим оператор:

DELETE S WHERE S# = ‘S1’

Предположим, что БД включает некоторые поставки для поставщика с номером S1 и выполняемое приложение не намеревается удалять сведения об этих поставках. Если выполнить эту операцию, то ограничение ссылочной целостности не будет выполняться для нового значения переменной-отношения S, что вызовет возникновение ошибки.

Однако существует подход, использующий компенсирующие операции, гарантирующие, что результирующее значение будет удовлетворять существующим ограничениям. Например, для рассматриваемого случая решением было бы автоматическое удаление всех ссылающихся кортежей ссылающейся переменной-отношения SP.

VAR SP BASE RELATION { … } …

FOREIGN KEY {S#} REFERENCES S

ON DELETE CASCADE;

Спецификация ON DELETE CASCADE определяет правило удаления для данного конкретного ключа, которое будет применено при обработке операторов DELETE. CASCADE – это тип ссылочной операции для этого правила удаления. Кроме CASCADE применяются еще и RESTRICT (операция производится, если нет ссылающихся кортежей, иначе возникает ошибка и отмен операции) и NO ACTION (никаких проверок не производится, что может привести к нарушению ссылочной целостности).

Триггерные процедуры, или триггеры, - это процедуры, которые автоматически вызываются, как только происходит некоторое событие (условие запуска). Обычно условием запуска является выполнение некоторой операции обновления БД, но это может быть и определенная исключительная ситуация (например, нарушение ограничения целостности) или истечение времени.

В общем случае они могут применяться для решения широкого круга проблем, в том числе обеспечения ссылочной целостности. Однако это скорее исключение – использование таких процедур, поскольку вызвано тем, что декларативный подход еще не вполне «встал на ноги». Всегда считается более приоритетным применение декларативных средств.

 

Реализация ограничений целостности в SQL достаточно сильно отличается от обсуждаемой ранее схемы. В SQL все ограничения делятся на три категории:

§ Ограничения домена;

§ Ограничения базовой таблицы;

§ Общие ограничения (иначе называемые утверждениями).

Однако ограничения домена отличаются от ограничения типа, а ограничения базовой таблицы отличаются от ограничений переменной-отношения. Аналогично утверждения отличаются от ограничений БД. Особенности:

§ В SQL вовсе нет ограничений типа, поскольку нет никаких типов вовсе, кроме встроенных.

§ Ограничение домена представляет некоторую форму ограничения атрибута.

§ Ограничения базовой таблицы и утверждения языка SQL упрощенно можно считать равносильными ограничениям переменной-отношения и БД, взятых вместе.




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 401; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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