Читать «Firebird. Руководство разработчика баз данных» онлайн - страница 669

Хелен Борри

110

Выполнение backup никак не влияет на Transaction Inventory Page, a sweep может продвинуть вперед OIT, но не более того. - Прим. науч. ред.

111

В версии 1.5 возможна передача оператора DDL в строке EXECUTE STATEMENT. Делайте это только в особых случаях.

112

Только в отношении работы конкретного запроса SQL, выполненного из клиентского приложения, в "недрах" которого произошла ошибка. Работа, выполненная ранее другими запросами SQL в этой же транзакции, будет сохранена (если транзакция завершится по commit). - Прим. науч. ред.

113

Начиная с версии 1.5. существует возможность объединять несколько событий в одном триггере. Подробности см. в главе 31.

114

В версии 1.5 LEAVE заменяет недокументированный оператор BREAK, который был частично реализован в версии 1.0.x. Не используйте BREAK.

115

Эта процедура является очень скромным примером программирования в PSQL. В SQL существует лучший способ проверить существование строк, чем их подсчет. В главе 32 мы снова будем обсуждать эту процедуру, выполнив некоторые изменения в ней, чтобы показать это. Если вы посмотрите исходные коды процедуры в базе данных, вы также заметите, что операторы SUSPEND и EXIT щедро разбросаны в разных местах, где они не нужны. Операторы SUSPEND и EXIT имеют идентичное использование в выполняемой процедуре. При этом в процедурах выбора оператор SUSPEND применяется особо. Для ясности и эффективности документирования предпочтительно исключить использование SUSPEND в качестве синонима EXIT.

116

ESQL, "супермножество" DSQL, имеет небольшое отличие в синтаксисе предложения INTO. Там INTO помещается сразу после ключевого слова SELECT и квантификатора строки (если присутствует). Водворение INTO В конец оператора в PSQL позволяет использовать наборы UNION В качестве входа для курсоров PSQL.

117

В Firebird 1.5 работа, выполняемая в данной вложенной процедуре, может быть реализована с помощью выражения CASE. Подробности см. в главе 21.

118

Клавдио Валдеррама (Claudio Valderrama) провел исследования по RDB$DB_KEY, именно его примеры здесь используются. Он живет в Чили, его псевдоним "robocop". Клавдио является официальным инспектором кода в проекте Firebird. Он поддерживает обширный сборник статей и кодов для Firebird и InterBase на своем сайте: http://www.cvalde.net.

119

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

120

NEW.* и OLD.* также допустимы в DDL для ограничений CHECK на уровне таблицы - например, CREATE TABLE BLAH (ID INTEGER, DATA INTEGER, CONSTRAINT CHECK_INCR CHECK(NEW.DATA > OLD.DATA)).

121

В Firebird 2.0 модификация значений OLD. * явно запрещена и будет вызывать ошибку при попытке присвоения значений переменным OLL. * как при выполнении, так и при создании триггера, Также запрещена модификация значений NEW, * В триггерах AFТER. Прuм. науч. ред.