Работа с базами данных

       

ТРИГГЕРЫ И ПРОЦЕДУРЫ


ЛАБОРАТОРНАЯ РАБОТА 14

ТРИГГЕРЫ И ПРОЦЕДУРЫ

Цель работы

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

Содержание работы и методические указания

к ее выполнению



Механизм триггеров позволяет программировать обработку ситуаций, возникающих при любых изменениях в базе данных. Триггер придается таблице базы данных и применяется при выполнении над таблицей операций включения, удаления или обновления строк. Применение триггера заключается в проверке сформулированных в нем условий, при истинности которых выполняются SQL-операторы, определенные внутри триггера, либо происходит вызов специфицированной внутри триггера процедуры базы данных. Триггер хранится в базе данных наряду с таблицами, представлениями, хранимыми процедурами.

При определении триггера задаются:

  • имя триггера;
  • условия включения триггера;
  • имя таблицы, при обращении к которой срабатывает триггер;
  • момент срабатывания триггера;
  • имя, идентифицирующее строку со вставляемой, модифицируемой или удаляемой информацией;
  • дополнительное условие;
  • действие, выполняемое при срабатывании триггера (операторы Insert, Delete, Update, Execute procedure).
  • Синтаксис оператора Create trigger (в нотации СУБД Informix) для создания триггера приведен в Приложении 2.

    При выполнении триггера выполняется оператор модификации данных либо вызывается хранимая процедура, предварительно созданная и помещенная в базу данных оператором Create procedure. Хранимая процедура в отличие от триггеров может выполнять достаточно сложный набор действий:

  • задавать и манипулировать с переменными различных типов;
  • проверять логические условия и выполнять различные виды циклов;
  • указывать действия, которые следует предпринять в случае ошибки (on exception);
  • вызывать другие процедуры, передавать и возвращать параметры и пр.
  • Одним из базовых требований к проектируемой базе данных является требование ее логической независимости от приложений, которые с ней работают.
    Все ограничения целостности должны задаваться не логикой работы приложения, а определяться на уровне базы данных. Ранее отмечалось, что по способам реализации ограничения целостности подразделяются на декларативные и процедурные, позволяющие задавать логически более сложные ограничения, в частности обеспечивать целостность по ссылкам. В этой связи важная цель механизма триггеров - обеспечение целостности базы данных и обеспечение логической независимости базы данных.

    Последовательность выполнения лабораторной работы:

    1. Ознакомиться со средствами разработки триггеров и хранимых процедур.

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

    3. Проверить правильность работы триггеров и процедур, разработанных в п. 2.

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

    5. Проверить правильность работы триггеров и процедур, разработанных в п. 4.

    6. Разработать набор хранимых процедур, которые целесообразно разместить в базе данных исходя из логики работы с базой данных.

    7. Проверить правильность работы процедур, разработанных в п. 6.

    8. Оформить раздел отчета "Хранимые процедуры и триггеры", включив в него описание разработанных триггеров и хранимых процедур.



    Контрольные вопросы



  • Что вкладывается в понятие физической и логической независимости данных?


  • Что вкладывается в понятие целостности данных?


  • Как разделяются ограничения целостности по способам реализации?


  • Как разделяются ограничения целостности по времени проверки?


  • Как разделяются ограничения целостности по области действия?


  • Что такое утверждение?


  • Как создается хранимая процедура?


  • Каковы основные конструкции языка SPL?


  • Как создается триггер?


  • Какие оператора языка SQL допустимы внутри триггера?


  • Как реализуется механизм событий?


  • Как указать действия, которые следует предпринять в случае ошибки?


  • Как удалить хранимую процедуру, триггер из базы данных?


  • С какими моделями транзакций связано исполнение триггеров?



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