Оглавление  | Назад  | Вперед

Справочник по инструкциям и функциям InterBase SQL

CREATE VIEW

Описание
Синтаксис
Примеры
Смотри так же

Описание

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

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

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

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

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

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

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

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

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

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

К началу страницы...

Синтаксис

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;

К началу страницы...

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

К началу страницы...


Оглавление  | Назад  | Вперед