Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по курсу ИСиТ.docx
Скачиваний:
6
Добавлен:
07.02.2024
Размер:
1.07 Mб
Скачать

Изменение представлений

Инструкция ALTER VIEW позволяет изменять ранее созданные представления, и имеет синтаксис аналогичный инструкции создания представления CREATE VIEW.

ALTER VIEW [ schema_name . ] view_name [ ( column [ ,...n ] ) ]

[ WITH [ ENCRYPTION ] [ SCHEMABINDING ] ]

AS select_statement

[ WITH CHECK OPTION ]

Если предыдущее определение представления было создано с использованием предложения WITH ENCRYPTION или CHECK OPTION, эти параметры будут действовать только в том случае, если они включены в инструкцию ALTER VIEW.

Пример:

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

ALTER VIEW HumanResources.EmployeeHireDate

AS

SELECT p.FirstName, p.LastName, e.HireDate

FROM HumanResources.Employee AS e JOIN Person.Person AS p

ON e.BusinessEntityID = p.BusinessEntityID

WHERE HireDate < CONVERT(DATETIME,'20090101',101) ;

GO

Удаление представлений

Удаление представлений из базы производится инструкцией DROP VIEW:

DROP VIEW [ schema_name . ] view_name [ ...,n ]

schema_name

Имя схемы, к которой принадлежит представление.

view_name

Имя удаляемого представления.

Пример:

В следующем примере удаляется представление EmployeeHireDate из реляционной схемы HumanResources.

DROP VIEW HumanResources.EmployeeHireDate;

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

Можно изменять данные базовой таблицы через представление до тех пор, пока выполняются следующие условия:

  • Любые изменения, в том числе инструкции UPDATE, INSERT и DELETE, должны ссылаться на столбцы только одной базовой таблицы.

  • Изменяемые в представлении столбцы должны непосредственно ссылаться на данные столбцов базовой таблицы. Столбцы нельзя сформировать каким-либо другим образом, в том числе:

    • при помощи агрегатной функции: AVG, COUNT, SUM, MIN, MAX, GROUPING, STDEV, STDEVP, VAR и VARP;

    • на основе вычисления. Столбец нельзя вычислить по выражению, включающему другие столбцы. Столбцы, сформированные при помощи операторов UNION, UNION ALL, CROSSJOIN, EXCEPT и INTERSECT, считаются вычисляемыми и также не являются обновляемыми.

  • Предложения GROUP BY, HAVING и DISTINCT не влияют на изменяемые столбцы.

  • Предложение TOP не используется нигде в инструкции SELECT представления вместе с предложением WITH CHECK OPTION.

Вышеназванные ограничения относятся ко всем подзапросам представления в предложении FROM, равно как и к самому представлению. То есть, компонент Database Engine должен иметь возможность однозначно проследить изменения от определения представления до одной базовой таблицы.

Если вышеуказанные ограничения не позволяют изменить данные через представление напрямую, для него можно создать триггеры INSTEAD OF. Триггер INSTEAD OF выполняется вместо инструкции модификации данных, для которой он определен. Этот триггер позволяет пользователю указать набор действий, которые должны быть выполнены для обработки инструкции модификации данных. Таким образом, если для представления создан триггер INSTEAD OF, связанный с конкретной инструкцией модификации данных (INSERT, UPDATE или DELETE), соответствующее представление можно обновлять при помощи этой инструкции.

Соседние файлы в предмете Информатика