Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Название:Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2006
- Город:Санкт-Петербург
- ISBN:5-94157-609-9
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ краткое содержание
Рассмотрены вопросы, необходимые разработчику для создания клиент-серверных приложений с использованием СУБД Firebird, явившейся развитием СУБД Borland Interbase 6. Содержится обзор концепций и моделей архитектуры клиент/сервер, а также практические рекомендации по работе с клиентскими библиотеками Firebird. Детально описаны особенности типов данных SQL, язык манипулирования данными (Data Manipulation Language, DML), а также синтаксис и операторы языка определения данных ( Data Definition Language, DDL). Большое внимание уделено описанию транзакций и приведены советы по их использованию при разработке приложений. Описано программирование на стороне клиента и сервера написание триггеров и хранимых процедур, создание и использование событий базы данных, обработка ошибок в коде на сервере и многое другое. Материал сопровождается многочисленными примерами, советами и практическими рекомендациями.
Для разработчиков баз данных
Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Оператор CREATE VIEW
Синтаксис для CREATE VIEW:
CREATE VIEW имя-просмотра
[(-имя-столбца-просмотра [, имя-столбца-просмотра [,...]])]
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 DISTINCT также допустим.
Предложение FROM вместе с любыми предложениями JOIN или подзапросами определяет базовые таблицы просмотра.
! ! !
ПРИМЕЧАНИЕ. Выражение SELECT * FROM <���отношение> допустимо, однако для просмотров не рекомендуется, если в ваших планах эффективная документируемое?. Если используется такое выражение, то порядок следования столбцов будет соответствовать порядку в базовой таблице. Важно помнить, что вам нужно использовать предложение именования столбцов (см. разд. "Задание имен столбцов просмотра").
. ! .
Вы можете включить предложение WHERE, если вам нужно задать условия поиска. Также может быть включено предложение GROUP BY вместе с необязательным предложением HAVING.
Те же самые правила, которые применяются к любым выражениям для определения полей времени выполнения в запросах, также применимы к столбцам времени выполнения в спецификациях просмотров. Выход просмотра почти такой же, что и вычисляемые столбцы в таблице. При этом вычисляемый столбец имеет свои собственные отличные эффекты в просмотре:
* он требует, чтобы обязательно присутствовал список столбцов;
* он делает запрос неизменяемым.
Предположим, что вы хотите создать просмотр, который выводит гипотетическое увеличение на 10 процентов окладов всех служащих компании. Следующий пример создает просмотр только для чтения, который отображает всех служащих и их возможные новые оклады:
CREATE VIEW RAISE_BY_10
(EMPLOYEE, NEW_SALARY)
AS
SELECT EMP_NO, SALARY * 1.1 FROM EMPLOYEE;
WITH CHECK OPTION является необязательным синтаксическим элементом, используемым только в спецификациях просмотров. Он воздействует на изменяемые просмотры, которые были определены с предложением WHERE. Это воздействие осуществляется на блок любых изменяющих операций, результатом которых может быть нарушение условия поиска в предложении WHERE.
Предположим, вы создаете просмотр, который предоставляет доступ ко всем отделам с бюджетами от $10 000 до $500 000. Просмотр V_SUB_DEPT может быть определен следующим образом:
CREATE VIEW V_SUB_DEPT (
DEPT_NAME,
DEPT_NO,
SUB_DEPT_NO,
LCW_BUDGET)
AS SELECT
DEPARTMENT,
DEPT_NO,
HEAD_DEPT,
BUDGET
FROM DEPARTMENT
WHERE BUDGET BETWEEN 10000 AND 500000
WITH CHECK OPTION;
Пользователь с привилегиями INSERT К этому просмотру может добавлять новые данные в столбцы DEPARTMENT, DEPT_NO, HEAD_DEPT и BUDGET базовой таблицы через этот просмотр, WITH CHECK OPTION гарантирует, что все значения бюджетов, вводимые через этот просмотр, будут находиться в указанном для просмотра диапазоне.
Следующий оператор добавляет новую строку отдела Publications через просмотр
V_SUB_DEPT:
INSERT INTO V_SUB_DEPT (
DEPT_NAME,
DEPT_NO,
SUB_DEPT_NO,
LOW_BUDGET)
VALUES ('Publications', '999', '670', 250000);
Однако следующий оператор не будет выполнен, потому что значение LOW_BUDGET выходит за пределы диапазона, заданного для базового столбца BUDGET:
INSERT INTO V_SUB_DEPT (
DEPT_NAME,
DEPT_NO,
SUB_DEPT_NO,
LOW_BUDGET)
VALUES ('Publications', '999', '670', 750000);
ISC ERROR CODE:335544558
Operation violates CHECK constraint on view or table V_SUB_DEPT
(ISC ERROR CODE:335544558
Операция нарушает ограничение CHECK для просмотра или таблицы V_SUB_DEPT)
Предложение WITH CHECK OPTION В просмотре может быть полезным, когда вы хотите предоставить пользователям изменяемый просмотр, однако вам нужно не допустить изменения ими некоторых столбцов. Просто включите условие поиска для каждого столбца, который вы хотите защитить. Полезность этого предложения несколько ограничена по той причине, что просмотр не может быть определен с заменяемыми параметрами.
Просмотры только для чтения и изменяемые
Когда над просмотром выполняется операция DML, изменения могут быть переданы базовым таблицам, на основе которых был создан просмотр, только в случае выполнения некоторых условий. Если просмотр соответствует этим условиям, он будет изменяемым. Если он не соответствует этим условиям, то просмотр будет только для чтения, и изменения в просмотре не смогут передаваться базовым таблицам.
Через просмотр значения могут передаваться только тем столбцам, которые были поименованы в просмотре. Firebird сохраняет NULL во всех других столбцах. Просмотр не будет изменяемым, если в нем не указаны столбцы, которые не допускают значения NULL.
Читать дальшеИнтервал:
Закладка: