Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

CREATE VIEW

Описание

CREATE VIEW описывает вид данных основанный на одной или более основной таблицы в базе данных. Возвращаемые строки определены инструкцией SELECT, который перечисляет столбцы исходных таблиц. Только определение вида существует в базе данных; вид непосредственно не представляет, из себя, сохраненные данные. Это позволяет выполнять операции выбора, project, join и union над видами, как если бы они были таблицами.

Пользователь, который создает вид - его владелец, и имеет все привилегии для этого, включая возможность предоставлять (GRANT) привилегии другим пользователям, триггерам и сохраненным процедурам. Пользователь может иметь привилегии к виду, без необходимости иметь доступ к таблицам, на которых вид основан. При создании видов:

  • Вид только для чтения требует SELECT привилегиями на основные таблицы.
  • Модифицируемый вид требует ALL привилегий на основные таблицы.

Опция view_col гарантирует, что вид всегда содержит те же самые столбцы и, что столбцы имеют те же самые, определенные видом, имена. Имена столбцов вида соответствуют порядку и количеству столбцов перечисленных в <select>, по этому определите все столбцы вида или ни одного.

Определение view_col может содержать один или более столбцов основанных на выражении, которое комбинирует результаты двух столбцов. Выражение должно возвращать одиночное значение и не должно возвращать массив или массив элементов. Если вид включает выражение view_col опция обязательна.

Обратите внимание: Любые столбцы, используемые в значении выражения, должны присутствовать раньше чем выражение может быть определено.

Предложение инструкции SELECT не должно включать предложение ORDER BY.

WITH CHECK OPTION позволяет InterBase проверить, что строка добавлена к или модифицирована в виде... (not understand*). Не используйте WITH CHECK OPTION для видов предназначенных только для вида.

Вид модифицируем если:

  • Он подмножество одиночной таблицы или другого модифицируемого вида.
  • Все столбцы базовой таблицы исключенные из определения вида допускают значения NULL.
  • Инструкция SELECT вида не содержит подзапросов, предикат DISTINCT, предложение HAVING, агрегатных функций, joined таблиц, определенных пользователем функций или сохраненных процедур.

Если определение вида не удовлетворяет этим условиям, он рассматривается, как только для чтения.

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

Синтаксис

CREATE VIEW name [(view_col [, view_col ...])]
  AS <select> [WITH CHECK OPTION];
Аргумент Описание
name Имя для вида. Должно быть уникальным среди всех имен видов, таблиц и процедур в базе данных.
view_col Имена столбцов вида. Имена столбцов должны быть уникальны среди всех имен столбцов в виде. Требуется, если вид содержит столбцы, основанные на выражении; иначе факультативен. По умолчанию, имена столбцов берутся из базовой таблицы.
<select> Определяет кретерии выбора строк, чтобы включить в вид.
WITH CHECK OPTION Предотвращает операции INSERT или UPDATE на модифицируемом виде, если INSERT или UPDATE нарушает условия поиска определенные в предложении WHERE в <select>.

Примеры

Следующая инструкция создает модифицируемый вид:

CREATE VIEW SNOW_LINE (CITY, STATE, SNOW_ALTITUDE) AS
  SELECT CITY, STATE, ALTITUDE
  FROM CITIES
  WHERE ALTITUDE > 5000;

Следующая инструкция использует вложенные запросы для создания вида:

CREATE VIEW RECENT_CITIES AS
  SELECT STATE, CITY, POPULATION FROM CITIES WHERE STATE IN
  (SELECT STATE FROM STATES WHERE STATEHOOD > "1-JAN-1850");

В модифицируемом виде, WITH CHECK OPTION предотвращает любые вставки или модификации через вид, которые не удовлетворяют предложению WHERE в инструкции CREATE VIEW SELECT:

CREATE VIEW HALF_MILE_CITIES AS
  SELECT CITY, STATE, ALTITUDE FROM CITIES
    WHERE ALTITUDE > 2500
  WITH CHECK OPTION;

Предложение WITH CHECK OPTION в предыдущем виде, предотвратило бы следующую вставку:

INSERT INTO HALF_MILE_CITIES (CITY, STATE, ALTITUDE)
  VALUES ("Chicago", "Illinois", 250);

С другой стороны, следующий UPDATE был бы разрешен:

INSERT INTO HALF_MILE_CITIES (CITY, STATE, ALTITUDE)
  VALUES ("Truckee", "California", 2736);

Предложение WITH CHECK OPTION не допускают модификаций через вид, которые изменяют значения строки, так что вид не сможет отыскать их:

UPDATE HALF_MILE_CITIES
  SET ALTITUDE = 2000
  WHERE STATE = "NY";

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

CREATE VIEW PHONE_LIST AS SELECT
  EMP_NO, FIRST_NAME, LAST_NAME, PHONE_EXT, LOCATION, PHONE_NO
  FROM EMPLOYEE, DEPARTMENT
  WHERE EMPLOYEE.DEPT_NO = DEPARTMENT.DEPT_NO;

Смотри так же:

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
13K
11 апреля 2006 года
grem11n
31 / / 11.04.2006
+1 / -0
Мне нравитсяМне не нравится
20 мая 2008, 13:59:48
А для чего вообще нужен VIEW ? Я так и не понял
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог