Книга: Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ

Переопределения в доменах

Переопределения в доменах

Столбцы, созданные с использованием доменов, могут переопределять некоторые наследуемые от домена атрибуты, заменяя наследуемый атрибут эквивалентным предложением атрибута. Определение столбца также может добавлять другие атрибуты. В табл. 13.1 описано, какие атрибуты могут, а какие не могут быть переопределены.

Таблица 13.1. Переопределение атрибутов доменов и столбцов

Атрибут

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

Замечания

Тип данных

Нет

 

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'.

Оглавление книги


Генерация: 0.101. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз