Перед тем, как создавать таблицы, которые ссылаются на домены, необходимо задать описание доменов при помощи команды create
domain. В результате ее выполнения создается шаблон, на который можно ссылаться в командах создания и модификаций таблиц.
Столбцы, базирующиеся на доменах, наследуют все хар-ки домена, причем чать из них м.б. переопределена в локальных описаниях
столбцов.
Тип данных не может быть переопределен при использовании домена в описании таблицы. Синтаксис описания доменов:
create domain <имя_домена>[as]<тип_данных>
[Default {literal|null|user}]
[Not null][Check(<dom_condition>)];
default - задание значения по умолчанию. Значеие по умолчанию присваивается соответствующему атрибуту при создании новой
строки в таблице, если его значение не указано явно параметром literal. null - оставляет значение пустым.
user - имя пользователя, создавшего запись.
Для полей типа data можно указывать параметр now.
not null - запрещает ввод пустых значений.
Check(<dom_condition>) - задает ограничения (описание контроля данных при вводе и изменении).
Для задания условия используются:
between...and, like, in, Value, is null, is not null, а также арифм. и логич. операторы.
Замечание. Домены создаются независимо друг от друга и от каких-либо таблиц, следовательно, check не может ссылаться ни на какой
другой домен или столбец таблицы.
Домен может иметь только 1 конструкцию check.
Конструкция check не может быть определена при описании атрибута таблицы. Если при описании поля в таблице, ссылающегося на домен,
имеющий check, указано свое ограничение, то действовать будут оба ограничения.
Измение доменов
Осуществляется командой Alter domain. С помощью данной команды можно изменить любые характеристики домена, кроме типа данных
и установок not null. Сделанные изменения воздействуют на атрибуты всех таблиц, где использовался измененный домен. Команду
Alter domain может выдать либо создатель домена, либо сисадмин.
Для изменения типа поля или установки not null необходимо удалить домен, а затем создать его снова с требуемыми характеристиками.
Если домен используется для описагия столбцов каких-либо таблиц, то удалить его нельзя.
Синтаксис команды изменения домена:
Alter domain <имя_домена> {
[Set Defaut {literal|Not null|User}] - изменяет значение по умолчанию
[Drop default] - удаляет значение по умолчанию
[Add [constaint]Check(<dom_condition>)] - добавить ограничения
[Drop constraint]}; - удалить ограничания
Удаление доменов осуществляется командой
Drop domain <имя_домена>