Книга: Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil
Модифицируемые представления
Модифицируемые представления
Выше мы упомянули о том, чт. е. возможность создавать изменяемые представления данных. Это действительно так - существует возможность не только читать данные из представления, но и изменять их!
Есть два способа сделать представление модифицируемым. Первый способ применим, когда представление создается на основе единственной 1аблицы (или другого модифицируемого представления), причем все столбцы данной таблицы должны позволять наличие NULL. При этом запрос, на котором основано представление, не может содержать подзапросов, агрегатных функций. UDF, хранимых процедур, предложений DISTINCT и HAVING. Если выполняются все эти условия, то представление автоматически становится модифицируемым, т. е. для него можно выполнять запросы DELETE, INSERT и UPDATE, которые будут изменять данные в таблице-источнике.
Список условий довольно внушительный и сильно ограничивает применение таких модифицируемых представлений, поэтому они ИСПОЛЬЗУЮТСЯ относительно редко.
Чтобы сделать модифицируемым представление, которое нарушает любое из вышеперечисленных условий, применяется механизм триггеров. Подробнее о том. что такое триггер, рассказывается в главе "Триггеры" (ч 1). а сейчас мы лишь рассмотрим общие принципы организации изменения данных во VIEW.
Для реализации обновляемого представления с помощью триггеров необходимо сделать следующее.
Создать 3 триггера для данного представления на события: BEFORE DELETE, BEFORE UPDATE и BEFORE INSERT. В этих триггерах описать, что должно происходить с данными при удалении, изменении и вставке.
Затем следует использовать данное представление в запросах на модификацию - DELETE, INSERT или UPDATE. Когда InterBase примет этот запрос, то проверит, существуют ли для данного представления соответствующие триггеры, т. е. BEFORE DELETE/INSERT/UPDATE. Если триггер для выполняемого действия существует, то InterBase вызовет его для модификации реальных данных в таблицах, лежащих в основе представления (хотя это могут быть и другие данные - каких-либо ограничений на текст этих триггеров нет), а затем перечитает строку (или строки), над которой производилась модификация
Таким образом, есть возможность реализовать сложные цепочки обновлений данных в представлениях.
В описании синтаксиса создания представления упоминалась опция WITH CHECK OPTION. Если при создании модифицируемого представления будет указана эта опция, то каждая строка данных, вставляемая или изменяемая в этом представлении, будет проверена на условие "попадания" в представление. Это можно объяснить так: если новая запись, вставляемая пользователем или получившаяся в результате обновления существующей записи, не удовлетворяет условиям запроса, который является поставщиком данных для VIEW, то вставка этой записи будет отменена и возникнет ошибка.
- Для чего нужны индексы?
- Как устроены индексы
- Применение индексов
- Ускорение выполнения запросов с помощью индексов
- Обеспечение ссылочной целостности с помощью индексов
- Оптимизация производительности индексов
- Виды ограничений в базе данных
- Пример типичного ограничения
- Создание ограничений
- Первичный и уникальный ключи
- Внешние ключи
- Ограничение CHECK
- Удаление ограничений
- Синтаксис DDL для работы с представлениями
- Примеры представлений
- Модифицируемые представления
- Заключение
- Синтаксис DDL для работы с представлениями
- 1. Требования к табличной форме представления отношений
- Использование представления в виде таблицы данных
- Добавление и изменение представления списка
- Создание представления
- Две формы представления сетевого графика
- 13.4.2. Представления многобайтных символов
- Фреймы для представления знаний
- 2.3.3. Таблицы, колонки и представления (view)
- 9. Европейские иконы «Продукты компаний мало различаются. Различаются способы их представления потребителям»
- 1. Начало. Где коренятся представления о причинных зависимостях и методах их выявления
- Формы представления графика работ проекта