Автор работы: Пользователь скрыл имя, 28 Февраля 2013 в 14:56, лекция
Основы реляционной модели данных были впервые изложены в статье Е.Кодда в 1970 г. Эта работа послужила стимулом для большого количества статей и книг, в которых реля-ционная модель получила дальнейшее развитие. Наиболее распространенная трактовка реляционной модели данных принадлежит К.Дейту. Согласно Дейту, реляционная модель состоит из трех частей:
• Структурной части
• Целостной части
• Манипуляционной части
существующий триггер новой версией, не затрагивая никаких
грантов, которые были выданы для первоначальной версии этого
триггера.
Альтернативно, триггер можно удалить и создать заново. Однако
все гранты, которые были выданы для удаляемого триггера, также
удаляются, и должны быть выданы заново после создания новой
версии триггера.
Удаление триггеров
Для удаления триггера из базы данных используйте команду DROP
TRIGGER. Например, чтобы удалить триггер с именем REORDER,
введите следующее предложение:
DROP TRIGGER reorder;
Привилегии, требуемые для удаления триггеров
------------------------------
Чтобы удалить триггер, вы должны иметь его в своей схеме, либо
иметь системную привилегию DROP ANY TRIGGER.
---------------
Включение и выключение триггеров
Триггер может находиться в одном из двух различных режимов:
включен Включенный триггер выполняет свое тело, если
выдано предложение триггера,
и ограничение
триггера (если есть) вычисляется как TRUE.
выключен Выключенный триггер не выполняет свое тело, даже
если выдано предложение
триггера, и ограничение
триггера (если есть) вычисляется как TRUE.
Выключение триггеров
--------------------
Вы можете временно выключить триггер, если имеет место одно из
следующих условий:
* Объект, к которому обращается триггер, недоступен.
* Вы должны выполнить массовую загрузку данных, и хотите
осуществить ее быстро, не возбуждая триггеров.
* Вы загружаете данные в таблицу, к которой применяется
триггер.
По умолчанию, триггер
отключить триггер, используйте команду ALTER TRIGGER с опцией
DISABLE. Например, следующее предложение отключает триггер
REORDER по таблице INVENTORY:
ALTER TRIGGER reorder DISABLE;
Вы можете
таблицей, с помощью команды ALTER TABLE с опциями DISABLE и ALL
TRIGGERS. Например, следующее предложение отключает все
триггеры, определенные для таблицы INVENTORY:
ALTER TABLE inventory
DISABLE ALL TRIGGERS;
Включение триггеров
-------------------
По умолчанию, триггер автоматически включается в момент его
создания; однако позже он может быть выключен. Закончив задачу,
для которой потребовалось выключать триггер, вы можете снова
включить его.
Чтобы включить триггер, используйте команду ALTER TRIGGER с
опцией ENABLE. Например, следующее предложение включает триггер
REORDER по таблице INVENTORY:
ALTER TRIGGER reorder ENABLE;
Вы можете одновременно включить все триггеры, ассоциированные с
таблицей, с помощью команды ALTER TABLE с опциями ENABLE и ALL
TRIGGERS. Например, следующее предложение включает все
триггеры, определенные для таблицы INVENTORY:
ALTER TABLE inventory
ENABLE ALL TRIGGERS;
Привилегии, требуемые для включения и выключения триггеров
------------------------------
Для включения и выключения триггеров с помощью команды ALTER
TABLE, вы должны либо владеть таблицей, либо иметь объектную
привилегию ALTER TABLE для таблицы или системную привилегию
ALTER ANY TABLE. Для включения или выключения индивидуального
триггера с помощью команды ALTER TRIGGER, вы должны либо владеть
триггером, либо иметь системную привилегию ALTER ANY TRIGGER.
Вывод информации о триггерах
Следующие обзоры словаря данных раскрывают информацию о
триггерах:
* USER_TRIGGERS
* ALL_TRIGGERS
* DBA_TRIGGERS
Полное описание этих обзоров словаря данных приведено в
приложении D.
Например, предположим, что для создания триггера REORDER было
использовано следующее предложение:
CREATE TRIGGER reorder
AFTER UPDATE OF parts_on_hand ON inventory
FOR EACH ROW
WHEN (new.parts_on_hand < new.reorder_point)
DECLARE
x NUMBER;
BEGIN
SELECT COUNT(*) INTO x
FROM pending_orders
WHERE part_no = :new.part_no;
IF x = 0 THEN
INSERT INTO pending_orders
VALUES (:new.part_no, :new.reorder_quantity, sysdate);
END IF;
END;
Следующие два запроса
возвращают информацию о
SELECT type, triggering_statement, table_name
FROM user_triggers
WHERE name = 'REORDER';
TYPE TRIGGERING_STATEMENT TABLE_NAME
---------------- -------------------------- ------------
AFTER EACH ROW UPDATE INVENTORY
SELECT trigger_body
FROM user_triggers
WHERE name = 'REORDER';
TRIGGER_BODY
------------------------------
DECLARE
x NUMBER;
BEGIN
SELECT COUNT(*) INTO x
FROM pending_orders
WHERE part_no = :new.part_no;
IF x = 0 THEN
INSERT INTO pending_orders
VALUES (:new.part_no, :new.reorder_quantity, sysdate);
END IF;
END;
Примеры применения триггеров
Вы можете
привязать к своим нуждам управление данными в базе данных
ORACLE. Например, триггеры обычно используются для:
* изощренного аудитинга
* предотвращения незаконных транзакций
* обеспечения ссылочной целостности между узлами в
распределенной базе данных
* реализации сложных организационных правил
* ввода в действие комплексных правил защиты
* прозрачной регистрации событий
* автоматической генерации значений вычисляемых столбцов
* поддержания синхронных дублирований таблиц
Аудитинг с помощью триггеров
----------------------------
Типичное применение
аудитинга ORACLE. Хотя можно писать триггеры, которые будут
записывать информацию, аналогичную той, что регистрируется
командой AUDIT, триггеры следует применять лишь в том случае,
если вам требуется более детальная аудиторская информация.
Например с помощью триггеров можно реализовать отслеживание на
уровне значений столбцов в строках таблиц.
Иногда команда ORACLE AUDIT рассматривается как средство аудита
ЗАЩИТЫ, тогда как триггеры
могут обеспечить средства
аудита.
Принимая решение о
базе данных, рассматривайте те возможности, которые могут
предоставить средства аутитинга ORACLE, и сравнивайте их с
аудитингом, который может быть реализован триггерами.
Аудит Стандартные опции аудитинга позволяют
предложений отслеживать предложения DML и DDL по отношению к
DML и DDL любым типам объектов схем и структур. По
сравнению с этим, триггеры
позволяют отслеживать
лишь предложения DML, выдаваемые по таблицам.
Централизован- Вся аудиторская информация базы данных
ный аудитор- записывается централизованно и автоматически,
ский журнал используя средства аудитинга ORACLE.
Декларативный Аудитинг, включаемый стандартными средствами
метод ORACLE, легче объявлять и сопровождать, и он
меньше подвержен ошибкам,
чем функции аудитинга,
определяемые через триггеры.
Можно отсле- Любые изменения существующих опций стандартного
живать опции аудитинга также можно отслеживать, что еще более
аутидинга усиливает контроль за действиями в базе данных.
Аудитинг Используя средства аудитинга базы данных, вы
сессии можете генерировать аудиторские записи либо
и аудитинг каждый раз при выдаче отслеживаемого предложения
исполнений (BY ACCESS), либо один раз на сессию, в которой
выдается это предложение
(BY SESSION). Триггеры
не могут выполнять отслеживание по сессии;
аудиторская запись будет генерироваться при
каждом обращении к защищаемой триггером таблице.
Аудитинг Аудитинг базы данных может отслеживать
безуспешных безуспешные попытки доступа к данным. Напротив,
попыток любая аудиторская информация, генерируемая
доступа триггером, стирается
в случае отката предложения
триггера.
Аудитинг Соединения и разъединения, а также статистика
подключений сессии (физические
и логические операции,
захваты) могут отслеживаться
только стандартным
аудитингом базы данных.
Применяя триггеры для изощренного аудитинга, обычно используют
триггеры AFTER. За счет использования триггеров AFTER, вы
регистрируете аудиторскую информацию после того, как предложение
триггера подверглось воздействию всех возможных ограничений
целостности, и избегаете
выполнения излишней
в тех случаях, когда предложения подвергаются откату из-за
нарушения ограничений целостности.
Использовать ли
от того, какую информацию вы отслеживаете. Например, триггеры
строк обеспечивают отслеживание значений по строкам таблицы.
Триггеры могут также позволить пользователю предоставлять "код
причины", по которой выдается отслеживаемое предолжение, что
может быть полезным при аудитинге как на уровне строк, так и на
Информация о работе Общая характеристика реляционной модели данных