FirebirdSQL logo

CREATE VIEW

Назначение

Создание нового представления.

Доступно в

DSQL

Синтаксис
CREATE VIEW viewname [<full_column_list>]
AS <select_statement>
[WITH CHECK OPTION];

<full_column_list> ::= (colname [, colname ...])
Table 1. Параметры оператора CREATE VIEW
Параметр Описание

viewname

Имя представления.Может содержать до 63 символов.

select_statement

Оператор SELECT.

full_column_list

Список столбцов представления.

colname

Имя столбца представления.Дубликаты имён столбцов не позволяются.

Оператор CREATE VIEW создаёт новое представление.Имя представления должно быть уникальным среди имён всех представлений, таблиц и хранимых процедур базы данных.

После имени создаваемого представления может идти список имён столбцов, получаемых в результате обращения к представлению.Имена в списке могут быть никак не связаны с именами столбцов базовых таблиц.При этом их количество должно точно соответствовать количеству столбцов в списке выбора главного оператора SELECT представления.

Если список столбцов представления отсутствует, то будут использоваться имена столбцов базовых таблиц или псевдонимов (алиасов) полей оператора SELECT.Если имена полей повторяются или присутствуют выражения столбцов без псевдонимов, которые делают невозможным получение допустимого списка столбцов, то создание представления завершается ошибкой.

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

Note
Дополнительные моменты
  • Если указан полный список столбцов, то задание псевдонимов в операторе SELECT не имеет смысла, поскольку они будут переопределены именами из списка столбцов;

  • Список столбцов необязателен при условии, что все столбцы в операторе SELECT имеют явное имя, и эти имена будут уникальными в списке столбцов.

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

Представление может быть обновляемым и только для чтения.Если представление обновляемое, то данные, полученные при обращении к такому представлению, можно изменить при помощи DML операторов INSERT, UPDATE, DELETE, UPDATE OR INSERT, MERGE.Изменения, выполняемые над представлением, применяются к базовой таблице(ам).

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

Для того чтобы представление было обновляемым, необходимо выполнение следующих условий:

  • оператор выборки SELECT обращается только к одной таблице или одному изменяемому представлению;

  • оператор выборки SELECT не должен обращаться к хранимым процедурам;

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

    • позволять значение NULL

    • NOT NULL столбцы должны иметь значение по умолчанию

    • значение NOT NULL столбцов должны быть инициализированы в триггерах базовых таблиц

  • оператор выборки SELECT не содержит полей определённых через подзапросы или другие выражения;

  • оператор выборки SELECT не содержит полей определённых через агрегатные функции (MIN, MAX, AVG, COUNT, LIST), статистические функции (CORR, COVAR_POP, COVAR_SAMP и др.), функции линейной регрессии (REGR_AVGX, REGR_AVGY и др.) и все виды оконных функций;

  • оператор выборки SELECT не содержит предложений ORDER BY, GROUP BY, HAVING;

  • оператор выборки SELECT не содержит ключевого слова DISTINCT и ограничений количества строк с помощью ROWS, FIRST/SKIP, OFFSET/FETCH.