Работа с базами данных
<<  Хранимые процедуры Работа с базами данных  >>
Создание замещающих триггеров баз данных
Создание замещающих триггеров баз данных
Понятие триггера
Понятие триггера
Типы триггеров
Типы триггеров
Привилегии для создания триггера
Привилегии для создания триггера
Создание замещающих триггеров
Создание замещающих триггеров
Модифицируемые и немодифицируемые представления
Модифицируемые и немодифицируемые представления
Представления, которые содержат соединения
Представления, которые содержат соединения
Замещающий триггер
Замещающий триггер
Пример замещающего триггера
Пример замещающего триггера
Триггер замещения
Триггер замещения
Обновим группу
Обновим группу
Имя отдела
Имя отдела
Презентация «Триггеры баз данных». Размер 44 КБ. Автор: MIKE.

Загрузка...

Триггеры баз данных

содержание презентации «Триггеры баз данных.ppt»
СлайдТекст
1 Создание замещающих триггеров баз данных

Создание замещающих триггеров баз данных

Создание замещающих триггеров баз данных.

2 Понятие триггера

Понятие триггера

Понятие триггера. ТРИГГЕР БАЗЫ ДАННЫХ - это хранимая программная единица PL/SQL, ассоциированная с конкретной таблицей базы данных. В отличие от подпрограмм, которые должны вызываться явно, триггер базы данных вызывается неявно и не имеет атрибутов. Акт выполнения триггера называется его активизацией (firing). Событием, запускающим триггер, является операция DML (INSERT, UPDATE или DELETE),выполняемая над таблицей или представлением базы данных. В Oracle8i эти функции расширены: триггер может срабатывать на системное событие, например на запуск или останов базы данных, а также на определенные виды операций DDL.

3 Типы триггеров

Типы триггеров

Типы триггеров. Триггер DML активизируется оператором DML, и тип триггера определяется типом этого оператора. Триггеры DML задаются для операций ввода, обновления и удаления информации (INSERT, UPDATE, DELETE).Они активизируются до или после операции, на уровне строки или оператора. В Oracle8i предлагается еще один вид триггеров. Триггеры замещения (instead of) можно создавать только для представлений (либо объектных, либо реляционных). В отличие от триггеров DML, которые выполняются в дополнение к операторам DML, триггеры замещения выполняются вместо операторов DML, вызывающих их срабатывание. Триггеры замещения должны быть строковыми триггерами. В Оrас1е8i и выше существует третий тип триггеров. Системный триггер активизируется не на операцию DML, выполняемую над таблицей, а на системное событие, например, на запуск или останов базы данных. Системные триггеры срабатывают и на операции DDL, такие как создание таблицы.

4 Привилегии для создания триггера

Привилегии для создания триггера

Привилегии для создания триггера. Для создания триггера базы данных необходимо иметь привилегии CREATE TRIGGER, а также либо владеть ассоциированной таблицей, либо иметь привилегии ALTER для ассоциированной таблицы, либо иметь привилегии ALTER ANY TABLE. Триггер базы данных состоит из трех частей: события триггера, необязательного ограничения триггера и действия триггера. Когда происходит событие триггера, триггер базы данных возбуждается, и анонимный блок PL/SQL выполняет предписанное действие. Триггеры базы данных возбуждаются с привилегиями владельца, а не текущего пользователя. Поэтому владелец должен иметь должный доступ ко всем объектам, вовлекаемым в действие триггера.

5 Создание замещающих триггеров

Создание замещающих триггеров

Создание замещающих триггеров. Триггеры замещения (insteadof) можно создавать только для представлений. В отличие от триггеров DML, которые выполняются в дополнение к операторам DML (или до, или после них), триггеры замещения выполняются вместо операторов DML, вызывающих их срабатывание. Триггеры замещения должны быть строковыми триггерами. Замещающие триггеры используются в двух случаях: Для того чтобы сделать представление модифицируемым, если иначе это сделать нельзя. Для модификации столбцов в столбце вложенной таблицы представления.

6 Модифицируемые и немодифицируемые представления

Модифицируемые и немодифицируемые представления

Модифицируемые и немодифицируемые представления. Модифицируемым (modifiable) называется такое представление, по отношению к которому можно выполнить оператор DML. Как правило, представление является модифицируемым, если оно не содержит: - Операций над множествами (UNION, UNION ALL, MINUS) - Функций агрегирования (SUM, AVG и т.д.) - Конструкций GROUP BY, CONNECT BY и START WITH - Операции DISTINCT - Соединений.

7 Представления, которые содержат соединения

Представления, которые содержат соединения

Модифицируемые и немодифицируемые представления. Существуют представления, которые содержат соединения и при этом являются модифицируемыми. Обычно представление с соединением может быть модифицировано, если операция DML, выполняемая над ним, одновременно модифицирует только одну базовую таблицу и если оператор DML отвечает слудующим условиям: INSERT - Оператор не ссылается, явно или неявно, на столбцы таблицы, не сохраняющей ключи. UPDATE - Обновляемые столбцы отображаются на столбцы таблицы, сохраняющей ключи. DELETE – В соединении только одна таблица, сохраняющая ключи.

8 Замещающий триггер

Замещающий триггер

Модифицируемые и немодифицируемые представления. Если представление является немодифицируемым, то для него можно создать замещающий триггер, выполняющий нужные действия и тем самым разрешающий его модификацию. Замещающий триггер можно создать и для модифицируемого представления, если требуется дополнительная обработка информации.

9 Пример замещающего триггера

Пример замещающего триггера

Пример замещающего триггера. Создадим представление classes_rooms : CREATE OR REPLACE VIEW classes_rooms AS SELECT department, course, building, room_number FROM rooms, classes WHERE rooms. room_id = classes.room_id; Ввести информацию в это представление нельзя. Над ним можно выполнить операции обновления или удаления данных, но, скорее всего, эти действия будут некорректны. Например, в результате выполнения над classes_rooms операции DELETE будут удалены соответствующие строки из classes.

10 Триггер замещения

Триггер замещения

Пример замещающего триггера. Создадим триггер замещения и с его помощью выполним обновление базовых таблиц: CREATE TRIGGER ClassesRoomsInsert INSTEAD OF INSERT ON classes_rooms DECLARE v_roomID rooms.room_id%TYPE; BEGIN -- Сначала определим идентификатор аудитории. SELECT room_id INTO v_roomID FROM rooms WHERE building = :new.building AND room_number = :new.room_number;

11 Обновим группу

Обновим группу

Пример замещающего триггера. -- А теперь обновим группу. UPDATE CLASSES SET room id = v roomlD WHERE department = :new.department AND course = :new.course; END ClassesRoomsInsert; С помощью триггера ClassesRoomsInsert оператор INSERT выполняется успешно и делает именно то, что нужно.

12 Имя отдела

Имя отдела

Задание. Создайте представление, содержащее имя отдела, номер региона, Фамилию, имя, должность и номер сотрудника. Операции DML для данного представления определим по следующим правилам: INSERT – Назначить отдел, введенному сотруднику. В результате s_dept (при необходимости s_region) обновляются. UPDATE – Изменить отдел, назначенный сотруднику. Это может привести к обновлению или s_emp или s_dept, в зависимости от того, какой столбец представления обновляется. DELETE – Очистить идентификатор отдела для сотрудника (сотрудник не зачислен ни в один отдел). В результате s_emp обновляется: ID устанавливается в значении NULL. Создайте триггер, реализующий сформулированные выше правила и позволяющий правильно выполнять операции DML над созданным представлением. Входные данные процедуры – ФИО, должность сотрудника, название отдела. Заработную плату сотруднику определить как среднюю з/п всех сотрудников фирмы.

«Триггеры баз данных»
Сайт

5informatika.net

115 тем
5informatika.net > Работа с базами данных > Триггеры баз данных.ppt