Главная » Просмотр файлов » С.Д. Кузнецов - Основы баз данных

С.Д. Кузнецов - Основы баз данных (1121716), страница 84

Файл №1121716 С.Д. Кузнецов - Основы баз данных (С.Д. Кузнецов - Основы баз данных) 84 страницаС.Д. Кузнецов - Основы баз данных (1121716) страница 842019-05-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 84)

В этот момент контекст сья~ будет «упрятан в стек», образуется и станет активным контекст следуюшего триггера — контекст пд1. После завершения выполнения этого триггера контекст пк1 больше не требуется, и он ликвидируется, а из стека восстанавливается контекст сььч, в котором и будет завершено выполнение триггера снглсв ьячс ио. Контекст выполнения триггера служит для того, чтобы обеспечить СУБД данными, необходимыми для корректного выполнения инициируемого оператора Б()(.. Эти данные представляют собой набор изменений состояния, где каждое изменение состояния описывает изменение данных в целевой таблице триггера.

Изменение состояния включает следующие данные: ° триггерное событие — 1НЗРР-., ПРПдтя или ПРЬВ-.Р; ° имя предметной таблицы триггера; ° имена столбцов предметной таблицы, специфицированных в определении триггера (только для триггеров по ЦРПЛР В); ° набор переходов (представление всех строк, вставляемых в предметную таблицу, модифицируемых в ней или удаляемых из нее), список всех григ~еров уровня к".ЛРРмкн=, уже выполненных в некотором (не обязательно активном) контексте выполнения, и список всех триггеров уровня пои, уже выполненных в некотором (не обязательно активном) контексте выполнения, и строк, над которыми зти триггеры выполнялись. Отслеживание уже выполненных триггеров ведется для предотврашения многократного выполнения одного и того же триггера в результате возникновения одного события, что могло бы потенциально привести к зацикливанию выполнения системы триггеров.

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

Набор переходов каждого изменения состояния изначально пуст, и переходы добавляются при каждом обновлении предметной таблицы, ассоциированной с изменением состояния (включая обновления, производимые ссылочными действиями). 405 Основы баз данных Курс Возисжности исаользоааниа старых и новых значений Мы уже продемонстрировали использование старых и новых значений в определении триггера Рерт совеесттох 1. Поскольку эта возможность является важной особенностью языка 59[., обсудим ее более подробно. Сначала немного поговорим о синтаксисе. Итак, в определении триггера может присутствовать раздел еееееехо1ХО о1г] ог пех уа1иеа а1(аа 11ас, причем список определений псевдонимов может включать следующие элементы: ОЬР [ ЕОХ ] [ АЯ ] согге1аг)оп пате ХЕХ [ ЕОХ ] [ АЯ ] согге1ас)оп пате ОЬР ТАВРЕ [ АЯ ] 1г[епг111ег ХЕХ ТАВОТЕ [ АЯ ] 1г[епе111ег Каждая из этих конструкций может входить в список определений псевдонимов не более одного раза, и спецификации ОРР еох и хех вох могут присутствовать только в определении триггеров уровня Вох.

Определяемые корреляционные имена и псевдонимы можно использовать внутри триггера для ссылок на значения предметной таблицы. Если определяется корреляционное имя для новых значений (хех Вох) или псевдоним для нового содержимого таблицы (мех ТАВРВ), то эти имена можно использовать для ссылок на значения, которые будут существовать в предметной таблице после выполнения операций 1ХЯЕЕТ или ОРРАТЕ. Если же определяется корреляционное имя для старых значений (ОРР еох) или псевдоним для старого содержимого таблицы (ОРР ТАВРВ)„то данные имена можно использовать для ссылок на значения, которые существовали в предметной таблице до выполнения операций ОВРАте или Ревете.

Конечно, нельзя использовать хех еох или хех тАВРВ в триггерах Ревете, поскольку никакие новые значения не создаются. Аналогично, нельзя использовать ОРР ВОХ или ОРР ТАВРЕ в триггерах 1ХЯЕЕТ, поскольку никакие старые значения не существовали. Таблицы, на которые указывают корреляционные имена или псевдонимы, называются переходными. Эти таблицы не сохраняются в базе данных долговременно; они создаются и уничтожаются динамически, по мере надобности в контексте выполнения триггера.

В триггерах уровня ЕОХ можно использовать корреляционное имя, определенное в конструкции ОРР ВОХ, для ссылки на значения строки, удаляемой или модифицируемой инициирующим оператором, в том виде, в котором данная строка существовала в предметной таблице до того, как была удалена или модифицирована при выполнении инициируюшего опера- 406 Язык баз данных ЕОЬ. средства манипулирования данными Лекция 17 тора. В триггерах этого уровня можно также использовать псевдоним, определенный в конструкции ОЬО ТАВЬЕ, для ссылкИ На ЛЮбое значение переходной таблицы в том виде, в котором она находилась до удаления или модификации очередной строки при выполнении инициируюшего оператора.

Аналогично обстоят дела с использованием корреляционных имен и псевдонимов, определенных в конструкциях НЕХ КОХИ ЫЕХ ТАВЬЕ. Для триггеров категории вееОке имеется существенное ограничение; в них не разрешается использовать конструкции ОЬВ ТАВ' Е и НЕХ тАВье, а внутритриггерный Я)Ь-оператор не может производить какие-либо изменения в базе данных. Основанием для такого ограничения является то, что на переходные таблицы, порождаемые Оьц тлвье и Мен тАВье, могут существенно влиять ссылочные действия, которые активизируются в результате изменений базы данных прн выполнении внутритриггерного Я)Ь-оператора. Поэтому значения строк в таких таблицах могут оказаться нестабильными и недостаточно предсказуемыми, если триггер срабатывает раньше действия триггерного оператора 801- Обработка нескольких триггеров, связанных с одной предметной таблицей В Б Н:1999 не запрещается определение нескольких триггеров, ассоциированных с одной предметной таблицей, относящихся к одной и той же категории (ВееОке или Аетек) и срабатывающих по одному и тому же событию.

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

Тогда при возникновении условия срабатывания всех триггеров одной группы сначала выполняется первый триггер, затем второй и т. д. В стандарте не специфицируется точность временной метки, связываемой с триггером, и если в одной группе обнаруживаются два или более триггеров с неразличимыми временными метками, то порядок их выполнения должен определяться в реализации. Подход к установлению порядка выполнения триггеров в соответствии с их временными метками может вызвать чисто практические трудности у пользователей 50Ь-ориентированных СУБД. Например, если в Основы баз данных Курс ходе разработки приложения выяснится потребность в определении нового триггера, который должен выполняться раньше некоторого существующего триггера той же группы, то стандарт не может предложить ничего лучшего, кроме как уничтожить определения всех триггеров этой группы, а затем заново определить их в нужном порядке.

И еше одно интересное свойство триггеров в Я.)Е:1999. Как уже говорилось ранее в этом разделе, каждый инициируемый Б(~Е-оператор должен являться атомарным, т. е. если его выполнение завершается неуспешно, то в базе данных не должно остаться никаких следов подобного выполнения. Но в стандарте говорится больше: неуспешное выполнение хотя бы одного триггера из группы с одинаковым условием срабатывания должно приводить к отмене результатов выполнения инициируемых БО)-операторов всех триггеров этой группы, а также к отмене результатов выполнения самого инициируюшего Я))-операторач. Триггеры и ссылочные действия В разделе вВведение> лекции 12 мы достаточно подробно обсуждали механизм определения ссылочных действий, служащий для автоматической поддержки ссылочной целостности.

Напомним, что ссылочные действия автоматически модифицируют значения внешнего ключа соответствующей таблицы при удалении или модификации строк таблицы, на которую указывают ссылки. Конечно, ссылочные действия весьма напоминают триггеры, и в некоторых БО).-ориентированных СУБД они реализуются на основе общего механизма триггеров. Разработчики стандарта БО)л!999 считают этот подход неудачным, поскольку процедурная природа триггеров входит в противоречие с тщательно разработанной декларативной основой ссылочных ограничений целостности. Другими словами, спецификация ссылочной целостности, содержащаяся в стандарте, препятствует возможности встраивания в триггер упрощенного процедурного кода.

Однако даже в тех СУБД, где не смешиваются механизмы ссылочных действий и триггеров, неминуемо возникает взаимосвязь между ссылочными действиями, изменяющими некоторую таблицу, и триггерами, которые определены в этой таблице или также изменяют ее. В Я2ь:1999 эта взаимосвязь немного упрощается за счет того, что контроль всех ограничений целостности 1включая ссылочные ограничения) и выполнение всех ссылочных действий должны производиться до срабатывания триггеров категории лгтяд. Если выполняется некоторая операция обновле- " Помимо прочего, этот факт означает, что определение в базе ленных нового триггера может принести к нерабоюспособности сушестнугоюих приложении, разработчики которых, вообгле говоря, могут даже и не знать о ноя нленин нового триггера.

Лекция !7 Язык бвз данных 80Ы средства манипулирования данными ния таблицы т, то после ее выполнения и срабатывания всех ссылочных действий инициируются все триггеры, ассоциированные с таблицей т и видом произведенной операции, а также соответствующие триггеры, ассоциированные с любой таблицей, которая затрагивалась ссылочным действием, если в этой таблице была изменена хотя бы одна строка. Конечно, срабатывание триггера может привести к новым ссылочным действиям, которые повлекут за собой срабатывание других триггеров и т, д.* В заключение этого раздела, посвященного механизму триггеров, заметим, что многие спецификации стандарта ЯО1:1999 выглядят недостаточно убедительными. По всей видимости, полезные на практике триггеры слишком сложны с точки зрения теории.

Характеристики

Тип файла
PDF-файл
Размер
5,28 Mb
Тип материала
Предмет
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6381
Авторов
на СтудИзбе
308
Средний доход
с одного платного файла
Обучение Подробнее