Программирование >>  Sql: полное руководство 

1 ... 87 88 89 [ 90 ] 91 92 93 ... 264


CREATE TRIGGER CHANGE REP OFFICE ON OFFICES FOR UPDATE AS IF UPDATE (OFFICE) BEGIN

UPDATE SALESREPS

SET SALESREPS.REP OFFICE = INSERTED.OFFICE FROM SALESREPS, INSERTED, DELETED WHERE SALESREPS.REP OFFICE = DELETED.OFFICE

Ссылки deleted. office и inserted.office в триггере относятся к Значениям столбца office соответственно до и после выполнения инструкции update.

Достоинства и недостатки триггеров

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

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

Скрытая логика. Когда деловые правила скрыты в базе данных, программы, осуществляющие, казалось бы, обычные обновления данных, могут в действительности привести к вьтолнению офомного объема вычислений. У профаммиста исчезает возможность управлять всеми процессами, происходящими в базе данных, поскольку профаммные запросы могут вызьгеать вьшолнение различньгх скрытых действий.

Скрытые факторы, влияющие на производительность. Когда в базе данных имеются триггеры, последовательность выполнения инструкций SQL теряет свою прозрачность . Даже самая простая инсфукция теоретически может привести к сканированию офомной таблицы, что отнимает очень много времени. В результате для профаммиста может быть совершенно непонятно, почему введенная им инсфукция выполняется так долго.

Триггеры и стандарты SQL

С момента своего появления фиггеры были одной из самых разрекламированных характеристик СУБД Sybase, и с тех пор они нашли свое применение во многих коммерческих СУБД. И хотя при составлении стандарта SQL2 была возможность унифицировать их реализацию, комитет по стандартизации предложил вместо них ввести Офаничение check. Как показывают приведенные в главе примеры, подобное Офаничение может успешно использоваться для контроля данных, добавляемых в таблицу или модифицируемых в ней. В то же время, в отличие от фиггеров, оно не может вызвать выполнение в базе данных независимых действий, например добавление сфоки или изменение ячейки таблицы.



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

Резюме

В SQL существует ряд средств, позволяющих сохранять целостность данных, содержащихся в реляционной базе данных.

При создании таблицы можно определить столбцы, которые обязательно должны содержать данные, и СУБД будет запрещать ввод в них значений NULL.

В стандартном SQL проверка данных на правильность ограничена проверкой их типа, однако во многих СУБД имеются и другие средства проверки.

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

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

Стандарт SQL2 и новые СУБД обеспечивают дополнительную поддержку ссылочной целостности, включая правила удаления и обновления, указывающие СУБД, как следует обрабатывать удаления и обновления строк, на которые ссылаются другие строки.

С помощью механизма триггеров можно обеспечить выполнение деловых правил Триггеры позволяют СУБД предпринимать сложные действия в ответ на такие события, как попытка выполнить инструкции insert, delete и update По сравнению с триггерами ограничения на значения столбцов обеспечивают менее эффективный способ включения деловых правил в определение базы данных.






ш шШт JtePWtk ШШ/ЩШЛк. jtttHKm

- -vifly V

- --

Обработка транзакций



1 ... 87 88 89 [ 90 ] 91 92 93 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика