Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metod_ukaz_dlya_lab_rab.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

Обновление данных в представлениях

Не все представления в SQL могут быть модифицированы. Модифицируемое представление определяется следующими критериями:

  • основывается только на одной базовой таблице;

  • содержит первичный ключ этой таблицы;

  • не содержит DISTINCT в своем определении;

  • не использует GROUP BY или HAVING в своем определении;

  • по возможности не применяет в своем определении подзапросы;

  • не использует константы или выражения значений среди выбранных полей вывода;

  • должен быть включен каждый столбец таблицы, имеющий атрибут NOT NULL;

  • оператор SELECT представления не использует агрегирующие (итоговые) функции, соединения таблиц, хранимые процедуры и функции, определенные пользователем;

  • основывается на одиночном запросе, поэтому объединение UNION не разрешено.

Пример 1

CREATE VIEW DATEEXAM (EXAM_DATE,QUANTITY)

AS SELECT EXAM_DATE, COUNT (*)

FROM EXAM_MARKS

GROUP BY EXAM_DATE;

Данное представление является необновляемым из-за присутствия в нем агрегирующей функции и GROUP BY.

Пример 2

CREATE VIEW LCUSTT

AS SELECT *

FROM UNIVERSITY

WHERE CITY = 'Москва';

Это обновляемое представление.

Если просмотр удовлетворяет этим условиям, к нему могут применяться операторы INSERT, UPDATE, DELETE. Различия между модифицируемыми представлениями и представлениями, предназначенными только для чтения, не случайны. Цели, для которых их используют, различны. С модифицируемыми представлениями в основном обходятся точно так же, как и с базовыми таблицами. Фактически, пользователи не могут даже осознать, является ли объект, который они запрашивают, базовой таблицей или представлением, т.е. прежде всего это средство защиты для сокрытия конфиденциальных или не относящихся к потребностям данного пользователя частей таблицы. Представления в режиме <только для чтения> позволяют получать и форматировать данные более рационально. Они создают целый арсенал сложных запросов, которые можно выполнить и повторить снова, сохраняя полученную информацию. Результаты этих запросов могут затем использоваться в других запросах, что позволит избежать сложных предикатов и снизить вероятность ошибочных действий.

Обычно в представлениях используются имена, полученные непосредственно из имен полей основной таблицы. Однако иногда необходимо дать столбцам новые имена, например, в случае итоговых функций или вычисляемых столбцов.

CREATE VIEW view4(Код, Название,

Тип, Цена, Налог) AS

SELECT КодТовара, Название,

Тип, Цена, Цена*0.05 from Товар Модифицирование представлений

Данные, предъявляемые пользователю через представление, могут изменяться с помощью команд модификации DML, но при этом фактическая модификация данных будет осуществляться не в самой виртуальной таблице-представлении, а будет перенаправлена к соответствующей базовой таблице. Например, запрос на обновление представления NEW_STUDENT

UPDATE NEW_STUDENT

SET CITY = 'Москва'

WHERE STUDENT_ID = 1004;

эквивалентен выполнению команды UPDATE над базовой таблицей STUDENT. Следует, однако, в общем случае учитывать, что обычно в представлении отображаются данные из базовой таблицы в преобразованном или усеченном виде, в результате чего применение команд модификации к таблицам-представлениям имеет некоторые особенности, рассматриваемые ниже.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]