Привет, Я DocuDroid!
Оценка ИИ поиска
Спасибо за оценку нашего ИИ поиска!
Мы будем признательны, если вы поделитесь своими впечатлениями, чтобы мы могли улучшить наш ИИ поиск для вас и других читателей.
GitHub

CREATE DOMAIN

Определяет новый домен.

Синтаксис

CREATE DOMAIN <name> [ AS ] <data_type>
    [ DEFAULT <expression> ]
    [ COLLATE <collation> ]
    [ <constraint> [ ... ] ]

где constraint:

[ CONSTRAINT <constraint_name> ]
{ NOT NULL | NULL | CHECK (<expression>) }

Описание

Команда CREATE DOMAIN создает новый домен. Домен по сути представляет собой тип данных с опциональными ограничениями (на допустимый набор значений). Пользователь, создающий домен, становится его владельцем. Имя домена должно быть уникальным среди типов данных и доменов, существующих в его схеме.

Если указано имя схемы (например, CREATE DOMAIN myschema.mydomain …​), то домен создается в указанной схеме. В противном случае он создается в текущей схеме.

Домены полезны, чтобы вынести общие ограничения полей в единое место для упрощения последующего обслуживания. Например, несколько таблиц могут содержать столбцы с адресами электронной почты, требующие одного и того же ограничения CHECK для проверки синтаксиса адреса. Проще определить домен, чем настраивать ограничение столбца для каждой таблицы, имеющей столбец электронной почты.

Чтобы создать домен, необходимо иметь привилегию USAGE для базового типа.

Параметры

Параметр Описание

name

Имя (опционально указанное со схемой) создаваемого домена

data_type

Базовый тип данных домена. Может включать спецификаторы массивов

DEFAULT <expression>

Задает значение по умолчанию для столбцов с типом данных домена. Значение представляет собой любое выражение без переменных (но подзапросы не допускаются). Тип данных выражения по умолчанию должен совпадать с типом данных домена. Если значение по умолчанию не указано, то значением по умолчанию является NULL. Выражение по умолчанию будет использоваться в любой операции вставки, где не указано значение для столбца. Если значение по умолчанию определено для конкретного столбца, оно переопределяет любое значение по умолчанию, связанное с доменом. В свою очередь, значение по умолчанию домена переопределяет любое значение по умолчанию, связанное с базовым типом данных

COLLATE <collation>

Необязательное правило сортировки (collation) для домена. Если правило сортировки не указано, используется правило сортировки по умолчанию для базового типа данных. Базовый тип должен быть сортируемым, если указано COLLATE

CONSTRAINT <constraint_name>

Необязательное имя ограничения. Если не указано, система генерирует имя

NOT NULL

Значениям этого домена обычно запрещено быть NULL. Однако домен с этим ограничением все же может принять значение NULL, если ему присваивается соответствующий тип домена, который стал NULL, например, через левое внешнее соединение (LEFT OUTER JOIN) или команду следующего вида:

INSERT INTO tab (domcol) VALUES ((SELECT domcol FROM tab WHERE false))

NULL

Значения этого домена могут быть NULL. Это поведение по умолчанию. Это выражение предназначено только для совместимости с нестандартными базами данных SQL. Его использование не рекомендуется в новых приложениях

CHECK (<expression>)

Выражения CHECK задают ограничения целостности или проверки, которым должны удовлетворять значения домена. Каждое ограничение должно быть выражением, дающим логический (Boolean) результат. Оно должно использовать ключевое слово VALUE для ссылки на проверяемое значение. В настоящее время выражения CHECK не могут содержать подзапросы или ссылаться на переменные, отличные от VALUE

Примеры

Создать тип данных us_zip_code:

CREATE DOMAIN us_zip_code AS TEXT
    CHECK(
        VALUE ~ '^\d{5}$'
        OR VALUE ~ '^\d{5}-\d{4}$'
        );

В примере используется проверка с помощью регулярного выражения, чтобы убедиться, что значение похоже на действительный почтовый индекс США.

Совместимость

Команда CREATE DOMAIN соответствует стандарту SQL.

См. также