Ограничение домена может быть одним из следующих:
<ограничение_домена>::= [NOT] <ограничение_домена1>
[[AND|OR][NOT] <ограничение_домена2>]…,
где
<ограничение_домена>::=
{VALUE<операция_сравнения> <значение>
| VALUE [NOT] BETWEEN <значение1> AND <значение2>
| VALUE [NOT] LIKE 'шаблон' [ESCAPE 'символ_пропуска' ]
| VALUE [NOT] CONTAINING <значение>
| VALUE [NOT] STARTING [WITH] <значение>
| VALUE[NOT] IN (<значение1> [ , <значение2> …])
| VALUE IS [NOT] NULL
| VALUE IS [NOT] DISTINCT FROM <значение>};
<значение> ::= { столбец | константа| <выражение> | функция}.
Ключевое слово VALUE используется как обозначение значения, которое будет помещаться в столбец таблицы, имеющий тип соответствующего домена. Например, для определения домена с именем Telephone, описывающего номер телефона абонента (по умолчанию '999999' и не может быть значение '100000') и имеющего тип VARCHAR(10), следует применить следующий запрос:
CREATE DOMAIN Telephone AS VARCHAR(10) DEFAULT '999999' CHECK (VALUE <> '100000');. После определения домена его имя используется для определения типа соответствующих столбцов таблиц.
Примечание. Если в таблице присутствует один столбец и он имеет значение по умолчанию, то его не удастся использовать, так как требуется при вставке в таблицу указать явно хотя бы один столбец.
В учебной базе данных определены пять доменов, запросы определения которых выглядят следующим образом:
CREATE DOMAIN Boolean AS SMALLINT CHECK (VALUE IN (0, 1)); CREATE DOMAIN Money AS NUMERIC(15,2); CREATE DOMAIN PKField AS INTEGER; CREATE DOMAIN TMonth AS SMALLINT CHECK (VALUE BETWEEN 1 AND 12);
предыдущаяследующая