Модифицируемые представления
Модифицируемые представления
Выше мы упомянули о том, чт. е. возможность создавать изменяемые представления данных. Это действительно так - существует возможность не только читать данные из представления, но и изменять их!
Есть два способа сделать представление модифицируемым. Первый способ применим, когда представление создается на основе единственной 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, то вставка этой записи будет отменена и возникнет ошибка.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
13.4.2. Представления многобайтных символов
13.4.2. Представления многобайтных символов Строки широких символов сохраняются на диске путем преобразования их в памяти в многобайтное представление набора символов с последующей записью в дисковый файл. Сходным образом, такие строки считываются с диска через
4.3. Способы представления данных
4.3. Способы представления данных Существуют разные способы представления данных. ([7],[13]). Наиболее распространенный из них - графический. Например, Panorama предоставляет следующие возможности (предполагается, что система использует в качестве механизма связи сообщения): •
6.2.4. Прозрачность и редактируемые формы представления
6.2.4. Прозрачность и редактируемые формы представления Другой идеей, возникающей в связи с данными примерами, является значение программ, которые переводят проблему из области, где обеспечить прозрачность трудно, в область, где реализовать ее легко. Программы audacity, sng(1) и
Выбор представления данных
Выбор представления данных Как мы представляем группу чисел? Можно использовать группу переменных, по одной на каждое число. Об этом даже страшно подумать. Можно использовать массив, по одному элементу на каждое число. Это значительно лучше, поэтому давайте
9.3.4. Модифицируемые регистры
9.3.4. Модифицируемые регистры Если в качестве побочного эффекта инструкция модифицирует значение одного или нескольких регистров, в функции asm() должна присутствовать четвертая секция. Например, инструкция fucomip меняет регистр кода завершения, обозначаемый как cc. Строки,
Окно трехмерного представления
Окно трехмерного представления Особое внимание стоит уделить фреймовому окну, в котором рисуется трехмерная модель построенного коттеджа, и возможностям, предоставляемым в нем.Для лучшего освоения работы с этим окном создайте небольшой проект, состоящий только из стен
13.2. Примеры И/ИЛИ-представления задач
13.2. Примеры И/ИЛИ-представления задач 13.2.1. И/ИЛИ-представление задачи поиска маршрута Для задачи отыскания кратчайшего маршрута (рис. 13.1) И/ИЛИ-граф вместе с функцией стоимости можно определить следующим образом:• ИЛИ-вершины представляются в форме X-Z, что означает:
5.2 Представления о качестве программного обеспечения
5.2 Представления о качестве программного обеспечения Имеется несколько представлений о качестве, некоторые из которых обсуждаются
Интерфейс представления
Интерфейс представления Интерфейс представления управляет функционированием и внешним видом пользовательского интерфейса и обеспечивает следующие характеристики:• Возможность индивидуальных пользовательских настроек• Простоту обучения и
Представления стеков
Представления стеков Существует несколько физических представлений стеков: Рис. 6.1. Три возможных представления стековЭтот рисунок иллюстрирует три наиболее популярных представления стеков. Для удобства ссылок дадим каждому из них свое имя:[x]. МАССИВ_ВВЕРХ:
Независимость от представления
Независимость от представления Динамическое связывание связано с одним из принципиальных аспектов повторного использования: независимостью от представления, т.е. возможностью запрашивать исполнение некоторой операции, имеющей несколько вариантов, не уточняя, какой
24. Различные представления графа
24. Различные представления графа Для реализации графа в виде списка инцидентности можно использовать следующий тип:Type List = ^S;S = record;inf: Byte;next: List;end;Тогда граф задается следующим образом:Var Gr: array[1..n] of List;Теперь обратимся к процедуре обхода графа. Это вспомогательный