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

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

Платформа Oracle поддерживает расширения стандарта ANSI, позволяющие создавать объектно-ориентированные представления, представления типа XMLType и представления, поддерживающие LOB и объектные типы.

Параметры инструкций следующие.

OR REPLACE

Существующее представление с именем имя представления заменяется на новое.

[NO] FORCE

При указании предложения FORCE представление создается независимо от того, существует ли базовая таблица и имеет ли пользователь, создающий представление, привилегии в базовых таблицах, представлениях или функциях, указанных в представлении. При указании условия FORCE представление также создается, невзирая на ошибки, которые могут возникнуть при его создании. При указании условия NO FORCE представление создается только в том случае, если существую! базовые таблицы и соответствующие привилегии.

предложение _consirainl

Позволяет указать ограничения для представлений к инструкции CREATE VIEW. При использовании в инструкции ALTER VIEW это предложение позволяет изменить указанное, существующее ограничение. Вы можете определить ограничение на уровне представления (напоминает ограничение уровня таблицы) или па уровне столбца или атрибута. Заметьте, что, хотя платформа Oracle позволяет определить ограничения для представления, она не применяет их принудительно. Система Oracle поддерживает ограничения в представлении в режимах DISABLE и NOVALIDATE.

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

OF имя_типа

Объявляется, что представление является объектным представлением типа имя_типа. Столбцы представления напрямую связаны с атрибутами этого типа. имяплипа — это ранее объявленный тип. Для представлений объектного типа и типа XMLType имена столбцов не указываются.

UNDER родительское_представление

Объявляется, что представление-потомок основывается на существующем родительском_представлении. Представление-потомок должно принадлежать к той же схеме, что и родительское, имя_типа должно быть непосредственным подтипом типа родительского_представления, и разрешается использовать только одно представление-потомок.

WITH OBJECT IDENTIFIER {DEFAULT | (атрибут [, …])

Определяется корневое объектное представление, а также все атрибуты объектного типа, определяющего все строки объектного представления. Атрибуты обычно соответствуют столбцам первичных ключей базовой таблицы, и они должны однозначно идентифицировать каждую строку таблицы. Это предложение несовместимо с представлениями-потомками и разыменованными или закрепленными SЕТ-ключами. При указании ключевого слова DEFA ULT используется неявный идентификатор объекта базовой объектной таблицы или представления.

OF XMLTYPE [[XMLSCHEMA имя_схемы_хml] ELEMENT {элемент url схемы xml # элемент)]
WITH OBJECT IDENTIFIER (атрибут [, …])

Представление будет возвращать экземпляры объектов XMLType. При дополнительном указании зарегистрированной схемы XML (имя_схемы_хml) и имени элемента вывод XML ограничивается элементом данной схемы XML. Предложение WITH OBJECT IDENTIFIER указывает идентификатор, однозначно определяющий каждую строку представления XMLType. В одном или нескольких атрибутах можно использовать неагрегатные функции, например extractValue(), чтобы получить идентификаторы из результирующего типа XMLType.

WITH READ ONLY

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

WITH CHECK OPTION [CONSTRAINT имя_ограничения]

Представление будет принимать только те вставленные или обновленные данные, которые можно вернуть при помощи инструкции SELECT представления. В качестве альтернативы вы можете указать одно предложение CHECK OPTION имя ограничения, существующее в базовой таблице, соблюдение которого вы хотите обеспечить. Если ограничение не названо, Oracle присваивает ограничению имя SYS_Cn, где n — целое число.

ADD предложение constraint

В представление добавляется новое ограничение. Платформа Oracle поддерживает ограничения только в режимах DISABLE и NOVALIDATE.

  • агрегатных и аналитических функций;
  • предложений GROUP BY, ORDER BY, CONNECT BY и START WITH;
  • подзапросов и выражений-коллекций в списке элементов инструкции SELECT (Подзапросы можно использовать в предложении WHERE инструкции SELECT);
  • обновления псевдостолбцов и выражений.

На определение представлений-потомков и материализованных представлений в Oracle накладывается ряд ограничений:

  • в представлении-потомке должны использоваться псевдонимы для псевдостолбцов ROWID, ROWNUM и LEVEL;
  • представление-потомок не может обращаться к псевдостолбцам CURRVAL и NEXTVAL;
  • представление-потомок не может содержать предложения SAMPLE;
  • в представлении-потомке вычисление всех столбцов инструкции SELECT * FROM… происходит во время компиляции. Таким образом, данные из всех новых столбцов, добавленных в базовую таблицу, не извлекаются в представление-потомок до тех пор, пока представление не будет перекомпилировано.

Заметьте, что более старые версии системы Oracle поддерживали секционированные представления. Эта функция удалена. Теперь вы должны использовать явно объявленные разделы.

Источник