|
Программирование >> Реализация баз данных
ГЛАВА 9 Триггеры Эанптие 1. Основные сведения о триггерах 272 Занятие . Создание еров и управление ими 279 Занпм 3, Программирование триггеров 288 Закрепление материала 297 В этой главе Триггеры - это особый класс хранимые едур, автоматически исполняемых во время модификации данных или после нее. Они срабатывают при исполнении трех команд: UPDATE, INSERT и DELETE. Триггеры применяются для обеспечения целостности данных и реализации сложной бизнес-логики. Из этой главы вы узнаете, когда целесообразно применять триггеры, а когда достаточно базовых ограничений. Триггеры создают с помо-шью языка Transact-SQL или SQL Enterprise Manager. Управление ими подразумевает изменение, переименование, просмотр, удаление и отключение. Чтобы обнаружить модификацию данных, триггеры используют две псевдотаблицы: Inserted и Deleted. Программирование триггеров требует полного понимания этих псевдотаблиц и языка Transact-SQL. В -лой главе мы покажем, как программировать триггеры и применять ряд системных команд и функций, которые часто используются при этом. Триггеры позволяют вычислять промежуточные суммы и другие значения, создавать записи аудита о модификации данных, вызывать внешние действие и реализовать сложную защиту целостности данных. Прежде всего Для изучения материалов этой главы вам понадобится: SQL Server 2000 Enterprise Edition, установленный на компьютере под управлением Windows 2000 Server; возможность зарегистрироваться в качестве администратора на компьютере под управлением Windows 2000 Server и SQL Server; результатнений из глав 3, 4, 5 и 7. Расширение возможностей защиты целостности данных с помощью триггеров При оценке базы данных, как правило, внимание на согласованность и точ- ность содержащейся в ней информации. Для поддержания согласованности и точности используются декларативная дурная целостности данных. Методы декларативной целостности данных описаны в главе 5, а в этой главе рассматривается распространенный метод процедурной целостности 4ых - триггеры. Триггеры позволяют писать процедуры, вызываемые при модификации табличных данных в результате исполнения операторов INSERT, UPDATE или DELETE. Как к таблицам, так и к представлениям можно привязать триггеры, реализующие бизнес-правила в базе данных. Например, одно из бизнес-правил, определенных для базы данных BookShopDB, утверждает, что при добавлении книги к заказу необходимо пометить ее в инвентарном списке как проданную. К таблица Orders можно привязать триггер, срабатывающий при размещении заказа на книгу. триггера находит книгу в таблице Books и помечает ее как проданную. Как создать такой триггер, показано в упражнении 3. Процедурная целостность данных Прежде чем реализовывать триггер, следует выяснить, нельзя ли получить аналогичные результаты с использованием ограничений или правил. Для уникальной идентификации строк табличных данных используют целостность сущностей (ограничения primary key и unique key). Доменная целостность служит для определения значений по умолчанию (определения default) и ограничение азона значений, разрешенных для ввода в данное поле (ограничения clieck и ссылочные ограничения). Ссылочная целостност[> используется для реализации логических связей между таблицами (ограничения foreign key и check). Если значение обязательного полР задано в операторе INSERT, то оно определяется с помощью определения default. Лучше применять ограничения, чем триггеры и правила. Занятие 1. Основные сведения о триггерах Обеспечение целостности данных имеет решающее значение для поддержания точности и согласованности базы данных. Триггер даавляю! собой особый вид хранимых процедур, привязанных к и представлениям. Они позволяют реализовать в базе данных сложные процедурные методы поддержания целостности данных и бизнес-логику. Событияпри модификации данных 1ыц-.нмк) автоматическое срабатывание триггеров. В этом занятии рассказано, когда следует использовать триггеры, а когда применять другие, менее ресурсоемкие средства, каскадную ссылочную целостность. Вы также познакомитесь с различными типами и классами триггеров, с их особенностями и ограничениями. Изучив материал этого занятия, вы сможете: V рассказать об использование геров различных типов (INSERT, UPDATE и DELETE) и классов (триггеэов INSTEAD OF и AFTER) для расширения возможностей зашиты целостности данных; 1 применять вместо триггеров каскадную ссылочную целостность; описать особенности триггеров и им ограничения. Продолжительность занятия - около 30 минут. Занятие 1 Основные сведения о триггерах 273 Правила оставлены в SQL Server 2000 для совместимости, а использование большого числа триггеров зачастую снижает производительность системы. Оптимизатор запросов использует определения ограничений для построения планов исполнения запросов. Все методы целостности данные оме триггеров) обсуждаются в главе 5. Триггеры особенно полезны, поскольку позволяют значительно более сложную логику по сравнению с той, что доступна методам декларативной целостности. Триггеры применяются в случаях: если использование методов декларативной целостности данных не отвечает функциональным потребностям приложения. Например, для изменения числового значения в таблице при удалении записи из этой же таблицы следует создать триггер; если необходимо каскадное изменение через связанные таблицы в базе данных. Например, чтобы изменять объем складских запасов пр шении заказа, следует создать трипер, привязанный к таблице Orders. Другой триггер, привязанный к таблице Inventory, при изменении количества товара на складе добавляет к таблице Purchasing запрос на закупку товара. Чтобы обновить или удалить данные в столбцах с ограничен ием foreign key. вместо пользовательского триггера следует применять ограничения каскадной ссылочной целостности; если база данныхденормализована и требуется способ автоматизированното обновления избыточных данных в нескольких таблицах; если необходимо сверить значение в одной таблице с неидентичным значением в другой [аблпце; если требуется вывод пользовательские ений и сложная обработка ошибок. Возможности и ограничения триггеров Каскадная ссылочная целостность расширяет возможности обеспечения точности и согласованности данных, обновляя и удаляя внешние ключи в базе данных. Триггеры расширяют эти возможности, обеспечивая защиту целостности данных в столбцах любой таблицы из базы данных и даже в объектах, расположенных за пределами текущей базы данных. Кроме того, триггеры разрешается привязывать и к Один триггер способен выполнять несколько действий и реагировать на несколько разных событий. Например, можно создать триггер, который реагирует на любое из событий INSERT, UPDATE или DELETE, или в программе на языке Transact-SQL описать бизнес-логику для обработки каждого типа событий. Нельзя устанавливать триггеры на временные или системные таблицы, хотя на такие таблицы разрешено ссылаться в операторах Transact-SQL самого триггера. Следует помнить о с.тсд hiiiUM важном отраничении: триггеры INSTEAD OF DELETE и INSTEAD OFUPDATE нельзя определять в таблицах, где заданы ограничения каскадной ссылочной целостности ON DELETE или ON UPDATE соответственно. Далее мы более подробно познакомим вас с INSTEAD OF-триггерами. События, вызывающие срабатывание триггеров Автоматическое срабатывание триггера вызывают три события: INSERT, UPDATE и DELETE, которые происходят в или представлении. Триггеры нельзя запустить вручную. В синтаксисе триггеров перед фрагментом программы, уникально определяющим выполняемую триггером задачу, всегда определено одно или несколько таких Типы триггеров соответствуют этим событиям. Например, можно создать триггер на обновление, срабатывающий при обновлении данных таблицы. Один триггер разрешается для реакции на несколько событий, поэтому несложно создать про-
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |