- •1. Основные понятия баз данных. Этапы развития субд. Функции, требования к субд.
- •2. Архитектура баз данных. Логическая и физическая независимость данных. Схема прохождения запросов к бд. Классификация моделей данных. Архитектура и модели "клиент-сервер" в технологии бд.
- •3. Реляционная модель бд, ее основные достоинства. Таблица, кортеж, атрибут, домен, первичный ключ, внешний ключ. Фундаментальные свойства отношений. Обеспечение целостности данных.
- •4. Основы реляционной алгебры. Операторы реляционной алгебры. Понятия полной, транзитивной, функциональной зависимостей. Нормализация, третья нормальная форма, шаги нормализации.
- •5. Модель «объект-свойство-отношение», er-диаграммы, проектирование схемы баз данных.
- •6. Язык sql, его структура, стандарты, история развития. Подмножество языка dml: операторы select, insert, update, delete.
- •7. Подмножество языка ddl: операторы create, alter, drop. Представления, их значение; обновляемые представления.
- •8. Подмножество языка dcl: операторы grant, revoke. Системные привилегии, привилегии на объекты, роли.
- •9. Транзакции, операторы управления транзакциями: commit, rollback, savepoint; журнал транзакций, уровни блокировок.
- •10. Pl/sql, структура, основные операторы.
- •11. Курсоры, операторы работы с курсором, оператор select into.
- •12. Процедуры, функции, пакеты.
- •13. Триггеры, их основные свойства и значение.
- •14. Параллельные архитектуры бд; масштабируемость, надежность, производительность.
- •15. Распределенные базы данных, фрагментация, тиражирование.
- •16. Средства защиты данных в субд.
- •17. Шлюзы к базам данных. Архитектура odbc. Www-интерфейс к бд.
- •18. Объектная модель данных.
- •19. Объектно-ориентированные и объектно-реляционные бд.
- •20. Эволюция технологий и возможностей субд oracle (oracle 8i, oracle 9i, oracle 10g).
- •21. Перспективы развития бд.
13. Триггеры, их основные свойства и значение.
Триггер — особого вида процедура, которая выполняется автоматически при возникновении события, указанного в спецификации триггера — триггерного события (triggering event).
В PL/SQL можно создать триггеры, которые будут срабатывать в одной из следующих ситуаций:
примен. оператора DML (Insert, Update, Delete) к определенному объекту схемы;
примен. оператора DDL (Create, Alter, Drop);
вход или выход пользователя в / из системы, ошибка сервера, запуск и останов БД.
Триггер нельзя вызвать напрямую. Oracle вызывает их автоматически в ответ на триггерные события.
Триггеры используются для реализации сложных бизнес-правил. #: триггер может проверять, истек ли срок продаваемого товара к моменту осуществления сделки продажи, или нет. Если истек, то триггер может предотвратить продажу данного товара.
Триггеры могут обеспечивать прозрачное протоколирование событий; #: отслеживать сколько раз каждый из пользователей обращался к таблице.
Момент срабатывания определяет, когда будет срабатывать триггер: до (Before), после (After) и вместо (Instead of) наступления триггерного события (выполнения запускающего оператора).
Если указано значение Before, триггер выполняется до каких-либо проверок ограничений на строки, затрагиваемые триггерным событием. Никакие строки не блокируются. Триггер этого типа называется, соответственно, Before-триггером (Before trigger).
Если выбрать ключевое слово After, то триггер будет срабатывать после того, как запускающий оператор завершит свою работу и будут выполнены проверки всех ограничений. В этом случае затрагиваемые строки блокируются на время выполнения триггера. Триггер этого типа называется After-триггером (After trigger).
Триггеры Instead of применяются только для представлений. Проблема состоит в том, что операторы DML не применимы к представлениям. Нельзя добавлять, изменять или удалять записи из представлений. Триггеры Instead of вызываются вместо выполнения DML-выражений. Если вы выполните оператор DML к представлению, то в соответствующем триггере можно выполнить какие-либо действия, и тогда у пользователя создастся впечатление, что он работает с таблицей.
Триггерное событие мб = Insert, Update, Delete.
Различные триггерные события можно комбинировать с помощью оператора or.
При использовании Update можно указать список столбцов, при изменении которых будет срабатывать триггер: Update of <столбец1>[,<столбец2>,…].
Триггер, запрещающий изменять имя менеджера:
Create or Replace Trigger onManagersUpdate
Before Update of Name on Managers
For each row
Declare
cant_change_name Exception;
Begin
If :new.Name <> :old.Name Then
Raise cant_change_name;
End If;
Exception
When cant_change_name Then
dbms_output.put_line('Нельзя изменить имя менеджера');
:new.Name := :old.Name;
End;
При попытке изменить значение поля Name сработает триггер, кот. сравнивает старое и новое значения поля Name. Если они различаются, то активизируется исключение, при обработке которого на экране появится соответствующее сообщение
Удаление: Drop Trigger <имя_триггера>;
Alter Trigger <имя_триггера> Disable; — Отключение триггера.
Alter Table <имя_таблицы> Disable All Triggers; — Отключение всех триггеров, связанных с таблицей.