Вход/Регистрация
Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
вернуться

Борри Хелен

Шрифт:

AS

<спецификация-выбора> [WITH CHECK OPTION];

Имя просмотра

Имя просмотра уникально идентифицирует просмотр как объект базы данных. Имя не может быть тем же самым, что и имя другого просмотра, таблицы или хранимой процедуры.

Задание имен столбцов просмотра

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

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

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

CREATE VIEW VJOB_LISTING

AS

SELECT E.*,

J. J0B_C0DE,

J.JOB_TITLE

FROM EMPLOYEE E

JOIN JOB J

ON E.JOB_CODE = J.JOB_CODE ;

ISC ERROR CODE:335544351

unsuccessful metadata update

STORE RDB$RELATION_FIELDS failed

attempt to store duplicate value (visible to active transactions)

in unique index "RDB$INDEX_15"

(ISC ERROR CODE:335544351 неудачное изменение

метаданных невозможно сохранить RDB$RELATION_FIELDS

попытка сохранить дубликат значения (видимый в активных транзакциях) в уникальном индексе "RDB$INDEX_15")

Индекс RDB$INDEX_15 является уникальным индексом для имени отношения и имени поля. Столбец JOB_CODE из таблицы EMPLOYEE уже сохранен для VJOB_LISTING, отсюда и исключение.

Необходимо именовать все столбцы в этом просмотре:

CREATE VIEW VJOB_LISTING (

EMP_NO, FIRST_NAME, LAST_NAME,

PHONE_EXT, HIRE_DATE, DEPT_NO,

EMP_JOB_CODE, /* альтернативное имя */

JOB_GRADE, JOB_COUNTRY, SALARY, FULL_NAME,

JOB_JOB_CODE, /* альтернативное имя * /

JOB_TITLE)

AS

SELECT

E.*,

J. JOB_CODE,

J. JOB_TITLE

FROM EMPLOYEE E

JOIN JOB J

ON E.JOB CODE = J.JOB_CODE ;

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

CREATE VIEW VJOB_ALTNAMES

AS

SELECT JOB_СODE || 'for ' || JOB_TITLE AS ALTNAME

FROM JOB;

ISC ERROR CODE:335544569

Invalid command

mast specify column name for view select expression

(ISC ERROR CODE:335544569 Неверная команда,

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

Следующее будет правильным:

CREATE VIEW VJOB_ALTNAMES

(ALTNAME)

AS

SELECT JOB_CODE || ' for ' || JOB_TITLE

FROM JOB;

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

Задание SELECT

Спецификация SELECT- это обычный оператор SELECT, который может включать соединения, поля выражений, спецификации группирования и условия поиска- но не условия упорядочения.

Выходной список в предложении SELECT определяет типы, позиции и (если не заданы явно) имена столбцов просмотра.

Запрос SELECT DISTINCT также допустим.

Предложение FROM вместе с любыми предложениями JOIN или подзапросами определяет базовые таблицы просмотра.

! ! !

ПРИМЕЧАНИЕ. Выражение SELECT * FROM <отношение> допустимо, однако для просмотров не рекомендуется, если в ваших планах эффективная документируемое?. Если используется такое выражение, то порядок следования столбцов будет соответствовать порядку в базовой таблице. Важно помнить, что вам нужно использовать предложение именования столбцов (см. разд. "Задание имен столбцов просмотра").

. ! .

Вы можете включить предложение WHERE, если вам нужно задать условия поиска. Также может быть включено предложение GROUP BY вместе с необязательным предложением HAVING.

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

Те же самые правила, которые применяются к любым выражениям для определения полей времени выполнения в запросах, также применимы к столбцам времени выполнения в спецификациях просмотров. Выход просмотра почти такой же, что и вычисляемые столбцы в таблице. При этом вычисляемый столбец имеет свои собственные отличные эффекты в просмотре:

  • Читать дальше
  • 1
  • ...
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: