Читаем Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ полностью

Атрибут

Переопределяется?

Замечания

Тип данных

Нет

DEFAULT

Да

CHARACTER SET

Да

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

COLLATE

Да

CHECK

Нет

Используйте предложение CHECK в операторе CREATE или ALTER TABLE для добавления в проверку новых условий

NOT NULL

Нет

Атрибут NOT NULL на уровне домена не может быть переопределен на уровне столбца. Во многих случаях лучше оставить для домена возможность пустого значения и добавлять ограничение NOT NULL для столбцов, где это необходимо, в операторе CREATE или ALTER TABLE

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

CREATE DOMAIN TEL_NUMBER

AS VARCHAR(18)

CHECK(VALUE LIKE '(0%)%');

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

CREATE TABLE LIBRARY_USER (

USER_ID INTEGER NOT NULL.

. . . <другие столбцы>,

PHONE_NO TEL_NUMBER,

CONSTRAINT CHK_TELNUM_UPPER

CHECK (PHONE_NO = UPPER(PHONE_NO))

);

Теперь у нас есть дополнительная проверка CHECK для этого столбца. Следующий оператор:

INSERT INTO LIBRARY_USER VALUES (USER_ID, PHONE_NO)

VALUES (99, '(09) 43889 wish');

будет ошибочным, потому что дополнительное ограничение CHECK требует, чтобы телефонный номер был '(09) 43889 wish'.

<p>Когда домены не работают</p>

Домен не может быть использован:

* в функции CAST (<имя_домена> AS <другой_тип>);

* вместо явного типа данных при определении входных и выходных аргументов хранимых процедур;

* при объявлении типа данных локальной переменной в триггере или хранимой процедуре;

* при определении типа данных элементов массива. При этом сам домен может быть массивом.

<p>Объявление домена BOOLEAN</p>

Firebird не поддерживает тип данных BOOLEAN. Домены в стиле BOOLEAN являются идеалом, потому что вы можете объявлять атрибуты, которые будут постоянными для всех таблиц. Рекомендуется использование минимальных типов данных: CHAR для переключателя T[rue]/F[aise] или Y[es]/N[о] или SMALLINT для пары 1/0. Следующие примеры предлагают способы, которыми вы можете реализовать ваши типы BOOLEAN.

Пример 13.1. Двухфазный переключатель со значением по умолчанию 'F' (False)

CREATE DOMAIN D_BOOLEAN AS CHAR

DEFAULT 'F' NOT NULL

CHECK(VALUE IN ('T', 'F'));

Пример 13.2. Трехфазный переключатель, допускающий значение UNKNOWN (т. е. NULL):

CREATE DOMAIN D_LOGICAL AS SMALLINT

CHECK(VALUE IS NULL OR VALUE IN (1,0));

Пример 13.3. Трехфазный переключатель, представляющий UNKNOWN как значение:

CREATE DOMAIN D_GENDER AS CHAR(4)

DEFAULT 'N/K' NOT NULL

CHECK (VALUE IN ('FEM', 'MASC', 'N/K'));

! ! !

ВНИМАНИЕ! He используйте BOOLEAN, UNKNOWN, TRUE или FALSE В качестве имен для булевых доменов. В Firebird это зарезервированные слова. Истинно логические типы планируются в Firebird 2 и могут появиться в промежуточных релизах между 1.5 и 2.

. ! .

<p>Изменение определения домена</p>

Оператор языка определения данных ALTER DOMAIN может быть использован для изменения любого аспекта существующего домена за исключением установки NOT NULL. Изменения, сделанные вами в определении домена, воздействуют на все определения столбцов, основанных на этом домене, если только соответствующие атрибуты не были переопределены на уровне таблицы.

Домен может быть изменен его создателем, пользователем SYSDBA или (в Linux/UNIX) любым пользователем с привилегией root операционной системы.

Используя ALTER DOMAIN, вы можете:

* переименовать домен;

* изменить тип данных;

* удалить существующее значение по умолчанию;

* установить новое значение по умолчанию;

* удалить существующее ограничение CHECK;

* добавить новое ограничение CHECK.

! ! !

ПРИМЕЧАНИЕ. Существует только один путь "изменить" установку NOT NULL для домена - это удалить домен и заново создать его с желаемой комбинацией характеристик.

. ! .

Вот синтаксис оператора:

ALTER DOMAIN { имя | старое-имя ТО новое-имя } {

[SET DEFAULT {литерал | NULL | USER | etc.}]

| [DROP DEFAULT]

| [ADD [CONSTRAINT] CHECK (<условия-соответствия>)]

| [DROP CONSTRAINT]

| TYPE тип-данных

};

<p>Примеры</p>

Этот оператор устанавливает новое значение по умолчанию для домена BOOK_GROUP:

ALTER DOMAIN BOOK_GROUP SET DEFAULT -1;

В следующем операторе имя домена BOOK_GROUP заменяется на PUBL_GROUP:

ALTER DOMAIN BOOK_GROUP TO PUBL_GROUP;

<p>Ограничения на изменение типов данных</p>
Перейти на страницу:

Похожие книги

Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript

Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.

Гэри Розенцвейг

Программирование, программы, базы данных / Программирование / Книги по IT
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ

Эта книга представляет собой перевод третьего издания американского бестселлера Effective C++ и является руководством по грамотному использованию языка C++. Она поможет сделать ваши программы более понятными, простыми в сопровождении и эффективными. Помимо материала, описывающего общую стратегию проектирования, книга включает в себя главы по программированию с применением шаблонов и по управлению ресурсами, а также множество советов, которые позволят усовершенствовать ваши программы и сделать работу более интересной и творческой. Книга также включает новый материал по принципам обработки исключений, паттернам проектирования и библиотечным средствам.Издание ориентировано на программистов, знакомых с основами C++ и имеющих навыки его практического применения.

Скотт Майерс , Скотт Мейерс

Программирование, программы, базы данных / Программирование / Книги по IT