Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Инструкция CREATE/ALTER VIEW советы и хитрости SQL Server

Платформа SQL Server поддерживает несколько расширений стандарта ANSI, но в ней не используются простые объектные представления и объектные представления-потомки.

CREATE VIEW имя_представления [(столбец [, …])]

[WITH {ENCRYPTION | SCHEMABINDING | VIEW_METADATA} [, …]]

AS инструкция_select [WITH CHECK OPTION]

Реализация инструкции ALTER VIEW в SQL Server позволяет вносить изменения в существующее представление, не затрагивая прав доступа или зависимых от представления объектов.

ALTER VIEW имя_представления [(столбец […])]

[WHH {ENCRYPTION | SCHEMABINDING | VIEW_METADATA} […]]

AS инструкция_select [WITH CHECK OPTION]

Параметры следующие.

ENCRYPTION

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

SCHEMABUILDING

Представление связывается с конкретной схемой, и это означает, что ко всем объектам представления нужно обращаться по их полному имени (по имени владельца и имени объекта). Представление и любые таблицы, на которые ссылается предложение SELECT представления, должны иметь полностью квалифицированные имена, например pubs.scott.employee. В представлениях, созданных с использованием предложения SCHEMABUILDING (и в таблицах, на которые ссылается это представление), перед удалением или изменением нужно сначала удалить связь со схемой (при помощи инструкции ALTER VIEW).

VIEW METADATA

Указывается, что SQL Server возвращает метаданные представления (а не метаданные базовой таблицы) при запросах от таких API, как DBLIB и OLEDB. В представлениях, созданных или измененных с использованием условия VIEW METADATA, можно обновлять столбцы с помощью триггеров INSTEAD OF UPDATE и INSTEAD OF INSERT.

WITH CHECK OPTION

Это предложение заставляет представление принимать только такие вставляемые или обновляемые данные, которые может вернуть инструкция SELECT представления.

Предложение SELECT представления SQL Server не может:

  • содержать предложений COMPUTE, COMPUTE BY, INTO и ORDER BY (предложение ORDER В Y разрешается, если используется предложение SELECT ТОР);
  • ссылаться на временную таблицу;
  • ссылаться на табличную переменную;
  • ссылаться более чем на 1024 столбца, в это число входят и столбцы, на которые ссылаются подзапросы.

Ниже мы определяем представление SQL server с предложениями ENCRYPTION и CHECK OPTION.

CREATE VIEW california_authors (last_name, first_name, author_id)
WITH ENCRYPTION AS
SELECT
au_lname,
au_fname,
au_id
FROM authors
WHERE state=’CA’
WITH CHECK OPTION GO;

Платформа SQL Server позволяет использовать в представлении несколько инструкций SELECT, если они связаны при помощи предложений UNION и UNION ALL. SQL Server также позволяет использовать в инструкции SELECT представления функции и подсказки (hints). Представление SQL Server является обновляемым, если все перечисленные ниже пункты верны.

  • Инструкция SELECT не содержит агрегатных функций.
  • Инструкция SELECT не содержит конструкций TOP, GROP BY, DISTINCT или UNION.
  • Инструкция SELECT не содержит производных столбцов. Предложение FROM инструкции SELECT ссылается как минимум на одну таблицу.

Платформа SQL Server позволяет создавать индексы по представлениям (см, инструкцию CREATE INDEX). Создав уникальный кластеризованный индекс по представлению, вы заставляете SQL Server сохранить физическую копию представления в базе данных. Изменения, вносимые в базовую таблицу, автоматически заносятся в индексированное представление. Индексированные представления занимают место на диске, но дают прирост производительности. Индексированные представления должны создаваться с использованием предложения SCHEMABUILDING.

Система SQL Server также позволяет создавать локальные секционированные представления и распределенные секционированные представления, Локальное секционированное представление — это секционированное представление, где все представления находятся на одном сервере SQL. Распределенное секционированное представление — это секционированное представление, в котором одно или несколько представлений располагаются на удаленных серверах.

В секционированных представлениях должно быть очень четко обозначено происхождение данных из различных источников, и каждый отдельный источник данных должен соединяться со следующим инструкцией UNION ALL. Более того, все столбцы секционированных представлений должны быть выделены и идентичны. (Идея состоит в том, чтобы логически разделять данные при помощи клиентского приложения. ‘ После этого SQL Server снова собирает данные при помощи секционированного представления.) В следующем примере показано, как данные поступают в представление из трех разных серверов SQL Server.

Отметьте, что каждый удаленный сервер (New York, Houston и los angcles) нужно определить как удаленный сервер на всех серверах SQL Server с иомошыо распределенного секционированного представления. Секционированные представления могут значительно увеличить производительность, поскольку они распределяют ввод/вывод п пользователей между многими машинами. Однако их достаточно сложно планировать, создавать и обслуживать. Обязательно читайте документацию производи!еля, где приводятся все детали об изменениях, которые можно сделать, используя секционированные представления.

При изменении существующего представления SQL Server включает и удерживает за представлением блокировку схемы до тех нор, пока изменение не будет завершено. Инструкция ALTER К/ЯМ7 удаляет все индексы, которые могут быть связаны с представлением. Их нужно будет заново создавать вручную с помощью команды CREATE INDEX.

Источник