Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ

Тут можно читать онлайн Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство БХВ-Петербург, год 2006. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
  • Автор:
  • Жанр:
  • Издательство:
    БХВ-Петербург
  • Год:
    2006
  • Город:
    Санкт-Петербург
  • ISBN:
    5-94157-609-9
  • Рейтинг:
    4/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ краткое содержание

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - описание и краткое содержание, автор Хелен Борри, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Рассмотрены вопросы, необходимые разработчику для создания клиент-серверных приложений с использованием СУБД Firebird, явившейся развитием СУБД Borland Interbase 6. Содержится обзор концепций и моделей архитектуры клиент/сервер, а также практические рекомендации по работе с клиентскими библиотеками Firebird. Детально описаны особенности типов данных SQL, язык манипулирования данными (Data Manipulation Language, DML), а также синтаксис и операторы языка определения данных ( Data Definition Language, DDL). Большое внимание уделено описанию транзакций и приведены советы по их использованию при разработке приложений. Описано программирование на стороне клиента и сервера написание триггеров и хранимых процедур, создание и использование событий базы данных, обработка ошибок в коде на сервере и многое другое. Материал сопровождается многочисленными примерами, советами и практическими рекомендациями.

Для разработчиков баз данных

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - читать онлайн бесплатно полную версию (весь текст целиком)

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - читать книгу онлайн бесплатно, автор Хелен Борри
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Просмотр только для чтения может быть сделан изменяемым с помощью триггеров.

Просмотры только для чтения

Просмотр будет просмотром только для чтения, если его оператор SELECT имеет любую из следующих характеристик:

* указывает квантификатор строк, отличный от ALL (т. е. DISTINCT, FIRST, SKIP);

* содержит поля, определенные через подзапросы или другие выражения;

* содержит поля, определенные через агрегатные функции, и/или содержит предложение GROUP BY;

* включает спецификации UNION;

* соединяет несколько таблиц;

* включает не все столбцы NOT NULL из базовой таблицы;

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

Преобразование просмотров только для чтения в изменяемые

Вы можете написать триггеры, которые будут выполнять корректные изменения в базовых таблицах, когда для просмотра запрашиваются операции DELETE, UPDATE или INSERT. Такая возможность Firebird может перевести неизменяемые просмотры в изменяемые.

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

CREATE TABLE Table1 (

ColA INTEGER NOT NULL,

ColB VARCHAR(20),

CONSTRAINT pk_table PRIMARY KEY(ColA) );

COMMIT;

CREATE TABLE Table2 (

ColA INTEGER NOT NULL,

ColC VARCHAR(20),

CONSTRAINT fk_table2 FOREIGN KEY REFERENCES Table1(ColA) ) ;

COMMIT;

CREATE VIEW TableView AS

SELECT Table1.ColA, Table1.ColB, Table2.ColC

FROM Table1, Table2

WHERE Table1.ColA = Table2.ColA;

COMMIT;

SET TERM ^;

CREATE TRIGGER TableView_Delete FOR TableView

ACTIVE BEFORE DELETE AS

BEGIN

DELETE FROM Table1

WHERE ColA = OLD. ColA;

DELETE FROM Table2

WHERE ColA = OLD. ColA;

END ^

CREATE TRIGGER TableView_Update FOR TableView

ACTIVE BEFORE UPDATE AS

BEGIN

UPDATE Table1

SET ColB = NEW.ColB

WHERE ColA = OLD.ColA;

UPDATE Table2

SET ColC = NEW.ColC

WHERE ColA = OLD.ColA;

END ^

CREATE TRIGGER TableView_Insert FOR TableView

ACTIVE BEFORE INSERT AS

BEGIN

INSERT INTO Table1 values (NEW.ColA,NEW.ColB);

INSERT INTO Table2 values (NEW.ColA,NEW.ColC);

END ^

COMMIT ^

SET TERM ;^

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

Предположим, у вас есть триггер BEFORE INSERT (перед вставкой) для базовой таблицы, который получает значение генератора для первичного ключа, если его NEW. VALUE имеет значение NULL. ЕСЛИ триггер для просмотра включает оператор INSERT для базовой таблицы, не указывайте столбец первичного ключа в этом операторе в просмотре. Это приведет к тому, что для NEW.VALUE первичного ключа будет передано значение NULL, давая возможность триггеру таблицы выполнить свою работу.

О триггерах и контекстных переменных NEW.* см. главу 31.

Безнадежные случаи

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

CREATE VIEW SYSTRANS

(CURR_TRANSACTION) AS

SELECT CURRENT_TRANSACTION FROM RDB$DATABASE;

Естественно изменяемые просмотры

Просмотр является естественно изменяемым, если выполняются следующие два условия:

* спецификация просмотра является подмножеством одной таблицы или другого изменяемого просмотра;

* все столбцы базовой таблицы, не включенные в определение просмотра, допускают значение NULL.

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

CREATE VIEW EMP_MNGRS (FIRST, LAST, SALARY) AS

SELECT FIRST_NAME, LAST_NAME, SALARY

FROM EMPLOYEE

WHERE JOB_CODE = 'Mngr'

WITH CHECK OPTION;

Поскольку предложение WITH CHECK OPTION включено в эту спецификацию, приложения не смогут изменять значение столбца JOB_CODE, даже если не было нарушения ограничения внешнего ключа для этого столбца в базовой таблице.

Изменение поведения изменяемых просмотров

Альтернативное поведение естественно изменяемых просмотров может быть задано с использованием триггеров. Для конкретной фазы операции (BEFORE/AFTER) триггеры просмотра вызываются до триггеров базовой таблицы. Следовательно, можно бережно и умело использовать просмотры для замены поведения обычного триггера базовой таблицы на планируемое.

Однако также можно создать разрушение при наличии плохо спланированных триггеров просмотров. Проверяйте, проверяйте, проверяйте!

Изменить определение просмотра?

Термины изменяемый и только для чтения относятся к тому, как может осуществляться доступ к данным из базовых таблиц, а не к тому, может ли изменяться определение просмотра. Firebird не предоставляет синтаксис ALTER VIEW.

Для изменения определения просмотра вы должны удалить просмотр, а затем заново его создать.

Удаление просмотра

Оператор DROP VIEW позволяет владельцу просмотра удалять его описание из базы данных. Он не влияет на базовые таблицы, связанные с просмотром.

Синтаксис:

DROP VIEW имя-просмотра;

Операция DROP VIEW не будет выполнена, если вы не соединены как владелец просмотра, или если этот просмотр используется в другом объекте, таком как просмотр, хранимая процедура, триггер для другого просмотра, определение таблицы или ограничение CHECK.

Следующий оператор удаляет определение просмотра:

DROP VIEW SOB_DEPT;

Использование просмотров в SQL

В SQL просмотр ведет себя во многих отношениях как обычная таблица. Вы можете осуществлять выборку из него, используя или нет предложения ORDER BY, GROUP BY или WHERE.

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

* создавать просмотры просмотров;

* выполнять выбор из просмотра в модулях PSQL;

* выполнять соединение (JOIN) просмотра с другими просмотрами и таблицами. В некоторых случаях вы можете соединять просмотры с хранимыми процедурами выбора.

Для простой иллюстрации создадим просмотр и хранимую процедуру для таблицы EMPLOYEE и выполним их соединение. Вот просмотр:

CREATE VIEW V_EMP_NAMES

AS

SELECT EMP_NO, LAST_NAME, FIRST_NAME

FROM EMPLOYEE ^

COMMIT ^

А вот хранимая процедура:

CREATE PROCEDURE P_EMP_NAMES

RETURNS (

EMP_NO SMALLINT;

EMP_NAME VARCHAR (35))

AS

BEGIN

FOR SELECT EMP_NO, FIRST_NAME || ' ' || LAST_NAME FROM EMPLOYEE

INTO :EMP_NO, :EMP_NAME

DO

SUSPEND;

END ^

COMMIT ^

Запрос, который их соединяет:

SELECT

V.EMP_NO,

V.LAST_NAME,

V.FI RST_NAME,

P.EMP_NAME

FROM V_EMP_NAMES V

JOIN P_EMPNAMES P

ON V.EMP_NO = P.EMPNO ^

Использование планов запросов для просмотров

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

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Хелен Борри читать все книги автора по порядку

Хелен Борри - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ отзывы


Отзывы читателей о книге Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ, автор: Хелен Борри. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x