Руководство по программному пакету ERwin

         

Что такое триггеры?


Триггером называется именованный набор прекомпилированных команд SQL, хранящийся на сервере, который автоматически выполняется, когда происходит заданное событие. Например, триггер может выполняться при вставке, изменении или удалении строки в существующей таблице. Триггер сообщает СУБД, как нужно выполнять команды SQL INSERT, UPDATE или DELETE, чтобы выполнялись нормальные правила (business rules) организации.

Триггер ссылочной целостности - особый вид триггера, используемый для поддержания целостности между двумя таблицами, которые связаны между собой. Если строка в одной таблице вставляется, изменяется или удаляется, то триггер ссылочной целостности (который мы далее будем называть RI-триггером) сообщает СУБД, что нужно делать с теми строками в других таблицах, у которых значение внешнего ключа совпадает со значением первичного ключа вставленной (измененной, удаленной) строки.

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

· Запрещается удаление фильма из таблицы MOVIE. Правило ссылочной целостности, запрещающее вставку, изменение или удаление строки, называется RESTRICT.

· Фильм удаляется из таблицы MOVIE и все строки в таблицах MOVIE-COPY и MOVIE-RENTAL-RECORD с тем же номером фильма, что и у удаленной строки, также автоматически удаляются. Правило ссылочной целостности, передающее изменение от одной таблицы к другой, называется CASCADE. Обратите внимание, что если Вы примените это правило ссылочной целостности к данной ситуации с фильмом, у Вас не будет возможности проследить за той копией удаленного фильма, которая находится на руках. Для таких ситуаций Вы можете переопределить триггер ссылочной целостности, устанавливаемый по умолчанию, так что информация о копии фильма и о том, у кого она находится, не стиралась бы случайно.


· Фильм удаляется из таблицы MOVIE, но номеру фильма для той копии, которая находится на руках, в таблице MOVIE-RENTAL-RECORD автоматически присваивается нулевое значение (пустое поле), что говорит о том, что Вы больше не планируете работать с этим фильмом. После того как последняя копия фильма будет возвращена, ее можно выставить для окончательной продажи, а не возвращать на нормальный склад для последующейсдачи в прокат. Правило ссылочной целостности, изменяющее текущее значение данных на нулевое, называется SET NULL.

· Хотя Вы и не можете использовать триггеры для усиления ссылочной целостности, если у Вас установлена РС-ориентированная СУБД, ERwin все-таки предоставляет альтернативный способ усиления ссылочной целостности в случае СУБД Fox Pro. См. руководство по ERwin для РС-ориентированных СУБД, ERwin Desktop Database Guide, разд. 'Усиление ссылочной целостности для таблиц Fox Pro'.





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


Содержание раздела