Лекция_2 (1119135), страница 6
Текст из файла (страница 6)
е. ограничение неудовлетворяется Подробное пояснение, чтобы дать понять, во что реальновырождается простая синтаксическая конструкция определениявнешнего ключа20.05.2016Доп. главы баз данных. Лекция 280Средства определения и отмены общихограничений целостности (11)Отмена определения общего ограничения целостности Для того чтобы отменить ранее определенное общееограничение целостности, нужно воспользоватьсяоператором DROP ASSERTION, задаваемым в следующемсинтаксисе: Вот пример оператора, отменяющего определениедискриминационного общего ограничения целостностиPRO_MNG_CONSTR:20.05.2016Доп. главы баз данных.
Лекция 281Средства определения и отмены общихограничений целостности (12) Немедленная и откладываемая проверка ограничений На первый взгляд кажется, что ограничения целостности(всех видов) должны немедленно проверяться в случаевыполнения любого действия, изменяющего содержимоебазы данныхвставка в любую таблицу новой строки, изменение илиудаление существующих строк Однако можно определить такие ограничения целостности,логическое выражение которых будет принимать значениеfalse при любой немедленной проверке Одним из примеров такого ограничения являетсяограничение таблицы DEPT20.05.2016Доп.
главы баз данных. Лекция 282Средства определения и отмены общихограничений целостности (13) Предположим, например, что в отдел зачисляется новый служащий Тогда нужно выполнить две операции:вставить новую строку в таблицу EMPи изменить соответствующую строку таблицы DEPTприбавить единицу к значению столбца DEPT_EMP_NO Очевидно, что в каком бы порядке ни выполнялись эти операции,20.05.2016сразу после выполнения первой из них ограничение целостностибудет нарушено,соответствующее действие будет отвергнуто,и мы никогда не сможем принять на работу нового служащегоДоп. главы баз данных. Лекция 283Средства определения и отмены общихограничений целостности (14) Поскольку ограничения целостности, немедленная проверкакоторых бессмысленна, являются нужными и полезными, вязык SQL включены средства, позволяющие регулироватьвремя проверки ограничений В контексте каждой выполняемой транзакции каждоеограничение целостности должно находиться в одном издвух режимов: режиме немедленной проверки (immediate) или режиме отложенной проверки (deferred) Все ограничения целостности, находящиеся в режименемедленной проверки, проверяются при выполнении в транзакции любой операции,изменяющей состояние базы данных Если действие операции нарушает какое-либо немедленнопроверяемое ограничение целостности, то это действиеотвергается20.05.2016Доп.
главы баз данных. Лекция 284Средства определения и отмены общихограничений целостности (15) Ограничения целостности, находящиеся врежиме отложенной проверки,проверяются при завершении транзакциивыполнении операции COMMIT Если действия этой транзакции нарушаюткакое-либо отложенно проверяемоеограничение целостности, то транзакцияоткатывается20.05.2016операция COMMIT трактуется как операцияROLLBACKДоп. главы баз данных.
Лекция 285Средства определения и отмены общихограничений целостности (16)Для этого в качестве заключительной синтаксической конструкции клюбому определению ограничения целостности (любого вида) может бытьдобавлена спецификация INITIALLY в следующей синтаксической форме:Эта спецификация указывает, в каком режиме должно находиться данноеограничение целостности в начале выполнения любой транзакцииINITIALLY IMMEDIATE означает, что в начале выполнения транзакцииданное ограничение будет находиться в режиме немедленной проверки,а INITIALLY DEFERRED – что в начале любой транзакции ограничениебудет находиться в режиме отложенной проверки,а также возможности смены режима этого ограничения при выполнениитранзакции20.05.2016DEFERRABLE означает, что для данного ограничения может бытьустановлен режим отложенной проверки,а NOT DEFERRABLE – что не можетДоп. главы баз данных.
Лекция 286Средства определения и отмены общихограничений целостности (17) Комбинация INITIALLY DEFERRED NOT DEFERRABLEявляется недопустимой Если в определении ограничения спецификация начальногорежима проверки отсутствует, то подразумевается наличиеспецификации INITIALLY IMMEDIATE При наличии явной или неявной спецификации INITIALLYIMMEDIATE и отсутствии явного указания возможностисмены режима подразумевается наличие спецификацииNOT DEFERRABLE При наличии спецификации INITIALLY DEFERRED иотсутствии явного указания возможности смены режимаподразумевается наличие спецификации DEFERRABLE20.05.2016Доп.
главы баз данных. Лекция 287Средства определения и отмены общихограничений целостности (18) При выполнении транзакции можно изменить режимпроверки некоторых или всех ограничений целостности дляданной транзакции Для этого используется оператор SET CONSTRAINTS,задаваемый в следующем синтаксисе: Если в операторе указывается список имен ограниченийцелостности, то все они должны быть DEFERRABLE если хотя бы для одного ограничения из списка этотребование не выполняется, то операция SETCONSTRAINTS отвергается При указании ключевого слова ALL режим устанавливаетсядля всех ограничений, в определении которых явно илинеявно было указано DEFERRABLE20.05.2016Доп.
главы баз данных. Лекция 288Средства определения и отмены общихограничений целостности (19)Если в качестве желаемого режима проверки ограничений заданоDEFERRED,Если в качестве желаемого режима проверки ограничений заданоIMMEDIATE,то все указанные ограничения переводятся в режим немедленной проверкиЕсли хотя бы одно из этих ограничений не удовлетворяется, тото все указанные ограничения переводятся в режим отложенной проверкиоперация SET CONSTRAINTS отвергается,и все указанные ограничения остаются в предыдущем режиме.При выполнении операции COMMIT неявно выполняется операция SETCONSTRAINTS ALL IMMEDIATEЕсли эта операция отвергается, то COMMIT срабатывает как ROLLBACK20.05.2016Доп.
главы баз данных. Лекция 289.