×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

При отключении обработки cookie наш сайт продолжит функционировать, однако будут использоваться исключительно необходимые технические файлы, без которых работа ресурса невозможна.

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

6.1.7. ALTER DOMAIN

6.1.7. ALTER DOMAIN

ALTER DOMAIN — изменение определения домена

Синтаксис

ALTER DOMAIN name
    { SET DEFAULT expression | DROP DEFAULT }
ALTER DOMAIN name
    { SET | DROP } NOT NULL
ALTER DOMAIN name
    ADD domain_constraint [ NOT VALID ]
ALTER DOMAIN name
    DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ]
ALTER DOMAIN name
     RENAME CONSTRAINT constraint_name TO new_constraint_name
ALTER DOMAIN name
    VALIDATE CONSTRAINT constraint_name
ALTER DOMAIN name
    OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER DOMAIN name
    RENAME TO new_name
ALTER DOMAIN name
    SET SCHEMA new_schema

где domain_constraint имеет вид:

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

Описание

Команда ALTER DOMAIN изменяет определение существующего домена. Существует несколько подформ:

SET/DROP DEFAULT

Эти формы устанавливают или удаляют значение по умолчанию для домена. Обратите внимание, что значения по умолчанию применяются только к последующим командам INSERT; они не влияют на строки, уже находящиеся в таблице, использующей данный домен.

SET/DROP NOT NULL

Эти формы изменяют, помечен ли домен как разрешающий значения NULL или отвергающий их. Вы можете выполнить SET NOT NULL только когда столбцы, использующие этот домен, не содержат значений NULL.

ADD domain_constraint [ NOT VALID ]

Эта форма добавляет новое ограничение к домену. Когда к домену добавляется новое ограничение, все столбцы, использующие этот домен, будут проверены на соответствие вновь добавленному ограничению. Эти проверки можно подавить, добавив новое ограничение с помощью опции NOT VALID; позже ограничение можно сделать действительным с помощью команды ALTER DOMAIN ... VALIDATE CONSTRAINT. Вновь вставляемые или обновляемые строки всегда проверяются на соответствие всем ограничениям, даже отмеченным как NOT VALID. NOT VALID принимается только для ограничений CHECK.

DROP CONSTRAINT [ IF EXISTS ]

Эта форма удаляет ограничения у домена. Если указано IF EXISTS и ограничение не существует, ошибка не возникает. В этом случае выдаётся уведомление.

RENAME CONSTRAINT

Эта форма изменяет имя ограничения у домена.

VALIDATE CONSTRAINT

Эта форма проверяет (валидирует) ограничение, ранее добавленное как NOT VALID, то есть проверяет, что все значения в столбцах таблиц данного доменного типа удовлетворяют указанному ограничению.

OWNER

Эта форма изменяет владельца домена на указанного пользователя.

RENAME

Эта форма изменяет имя домена.

SET SCHEMA

Эта форма изменяет схему домена. Все ограничения, связанные с доменом, также переносятся в новую схему.

Чтобы использовать ALTER DOMAIN, вы должны быть владельцем домена. Чтобы изменить схему домена, вы также должны иметь право CREATE в новой схеме. Чтобы изменить владельца, вы должны иметь возможность выполнить SET ROLE для новой роли-владельца, и эта роль должна иметь право CREATE в схеме домена. (Эти ограничения гарантируют, что изменение владельца не позволит сделать ничего такого, что нельзя было бы сделать удалением и повторным созданием домена. Однако суперпользователь может изменить владельца любого домена в любом случае.)

Параметры

name

Имя (возможно, с указанием схемы) существующего домена, который нужно изменить.

domain_constraint

Новое ограничение для домена.

constraint_name

Имя существующего ограничения, которое нужно удалить или переименовать.

NOT VALID

Не проверять существующие хранимые данные на соответствие ограничению.

CASCADE

Автоматически удалять объекты, зависящие от ограничения, и, в свою очередь, все объекты, зависящие от этих объектов (см. Раздел 2.2.15).

RESTRICT

Отказываться от удаления ограничения, если есть какие-либо зависимые объекты. Это поведение по умолчанию.

new_name

Новое имя для домена.

new_constraint_name

Новое имя для ограничения.

new_owner

Имя пользователя нового владельца домена.

new_schema

Новая схема для домена.

Примечания

Хотя команда ALTER DOMAIN ADD CONSTRAINT пытается проверить, что существующие хранимые данные удовлетворяют новому ограничению, эта проверка не является абсолютно надёжной, потому что команда не может «видеть» строки таблиц, которые были вставлены или обновлены параллельно и ещё не зафиксированы. Если существует риск, что параллельные операции могут вставить некорректные данные, следует действовать так: добавить ограничение с использованием опции NOT VALID, зафиксировать эту команду, подождать, пока все транзакции, начавшиеся до этого коммита, завершатся, и затем выполнить команду ALTER DOMAIN VALIDATE CONSTRAINT для поиска данных, нарушающих ограничение. Этот метод надёжен, потому что после фиксации ограничения все новые транзакции гарантированно применяют его к новым значениям доменного типа.

В настоящее время команды ALTER DOMAIN ADD CONSTRAINT, ALTER DOMAIN VALIDATE CONSTRAINT и ALTER DOMAIN SET NOT NULL завершатся неудачей, если указанный домен или любой производный от него домен используется внутри столбца составного типа (композитного, массива или диапазона) в любой таблице базы данных. В будущем их планируется улучшить, чтобы они могли проверять новое ограничение для таких вложенных значений.

Примеры

Чтобы добавить ограничение NOT NULL к домену:

ALTER DOMAIN zipcode SET NOT NULL;

Чтобы удалить ограничение NOT NULL у домена:

ALTER DOMAIN zipcode DROP NOT NULL;

Чтобы добавить ограничение CHECK к домену:

ALTER DOMAIN zipcode ADD CONSTRAINT zipchk CHECK (char_length(VALUE) = 5);

Чтобы удалить ограничение CHECK у домена:

ALTER DOMAIN zipcode DROP CONSTRAINT zipchk;

Чтобы переименовать ограничение CHECK у домена:

ALTER DOMAIN zipcode RENAME CONSTRAINT zipchk TO zip_check;

Чтобы переместить домен в другую схему:

ALTER DOMAIN zipcode SET SCHEMA customers;

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

Команда ALTER DOMAIN соответствует стандарту SQL, за исключением вариантов OWNER, RENAME, SET SCHEMA и VALIDATE CONSTRAINT, которые являются расширениями Digital Q.DataBase. Предложение NOT VALID варианта ADD CONSTRAINT также является расширением Digital Q.DataBase.

Смотрите также

CREATE DOMAIN, DROP DOMAIN
Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению