Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Поддержка целостности данных с помощью хранимых процедур

 

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

 

CREATE EXCEPTION AuthorNotFound "Автор не найден.";

 

CREATE PROCEDURE FindAuthor

(AuthorCode INTEGER,

BookCode INTEGER)

AS

DECLARE VARIABLE FindAuthorCode INTEGER;

/* В переменную помещаем результат поиска кода автора в таблице BookAuthors./*

BEGIN

SELECT ba.Code

FROM BookAuthors ba

WHERE ba.Code = AuthorCode

INTO:FindAuthorCode;

/* В переменную помещаем результат поиска кода автора в таблице BookAuthors./*

IF (FindAuthorCode IS NULL) THEN

/* В таблице BookAuthors заданного кода автора книги не обнаружено./*

BEGIN

EXCEPTION AuthorNotFound;

SUSPEND;

END

ELSE

/* В таблице BookAuthors обнаружен заданный код автора книги./*

BEGIN

UPDATE Books

SET AuthorCode = FindAuthorCode

WHERE Code =:BookCode

SUSPEND;

END

END

 

Обратите внимание на еще одну функцию языка описания данных сервера InterBase — поддержку исключительных ситуации (EXCEPTION). Они представляют собой поименованные сообщения об ошибках, генерируемые в хранимой процедуре при обнаружении ошибочной ситуации. При возникновении исключительной ситуации в вызывающее приложение возвращается сообщение об ошибке и выполнение хранимой процедуры завершается. Однако исключительную ситуацию можно обработать и внутри хранимой процедуры, после чего продолжить ее выполнение.

Исключительные ситуации определяются с помощью оператора CREATE EXCEPTION, как показано в листинге. Для генерации исключительной ситуации внутри хранимой процедуры используется следующий синтаксис:

 

EXCEPTION ExceptionName;

 

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

 

КОНТРОЛЬНЫЕ ВОПРОСЫ:

1. На что указывает определитель NULL и как его понимать?

2. Чем отличается нулевое численное значение или заполненная пробелами текстовая строка от определителя NULL.

3. Почему в базовом отношении ни один атрибут первичного ключа не может содержать отсутствующих значений, обозначаемых определителем NULL?

4. Сформулируйте ограничение целостности, которое касается внешних ключей.

5. Что такое корпоративные ограничения целостности?

6. Какие разновидности хранимых процедур Вы знаете?

7. Каковы особенности хранимых процедур выбора?

8. Каковы особенности хранимых процедур действия?

9. Какие преимущества хранимых процедур Вы знаете?

10. Для чего служит аппарат генераторов в Interbase?

11. Что такое триггер? Каковы его особенности?

12. Какие события изменения таблицы базы данных могут вызвать выполнение тела триггера?

13. Какие преимущества использования триггеров Вы знаете?

14. Как и какие каскадные воздействия обеспечиваются с помощью триггеров?

<== предыдущая лекция | следующая лекция ==>
Использование триггеров для обеспечения ссылочной целостности | Формирование цен по базисным условиям, принятое в России
Поделиться с друзьями:


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


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



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




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