Быстрый старт
Развертывание
Моделирование данных
Подключение
Запись данных
Миграция
Запросы
Операции и обслуживание
Типовое обслуживание
Секционирование
Резервное копирование и восстановление
Масштабирование
Мониторинг
Настройка производительности
Устранение неполадок
Справочник
Руководство по инструментам
Типы данных
Хранилище данных
Выполняющая система
Потоковая передача
Восстановление после сбоев
Конфигурация
Индексы
Расширения
Справочник по SQL
Часто задаваемые вопросы
Изменяет определение домена.
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_USER | SESSION_USER }
ALTER DOMAIN <name> RENAME TO <new_name>
ALTER DOMAIN <name> SET SCHEMA <new_schema>
ALTER DOMAIN изменяет определение существующего домена. Существует несколько подформ:
Чтобы использовать ALTER DOMAIN, вы должны быть владельцем домена. Чтобы изменить схему домена, вы также должны иметь привилегию CREATE в новой схеме. Чтобы изменить владельца, вы также должны быть прямым или косвенным членом новой роли-владельца, и эта роль должна иметь привилегию CREATE в схеме домена. (Эти ограничения обеспечивают, что изменение владельца не позволяет делать ничего такого, чего нельзя добиться удалением и повторным созданием домена. Однако суперпользователь может изменить владельца любого домена.)
Хотя команда 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;
Добавление проверочного ограничения к домену:
ALTER DOMAIN zipcode ADD CONSTRAINT zipchk CHECK (char_length(VALUE) = 5);
Удаление проверочного ограничения из домена:
ALTER DOMAIN zipcode DROP CONSTRAINT zipchk;
Переименование проверочного ограничения домена:
ALTER DOMAIN zipcode RENAME CONSTRAINT zipchk TO zip_check;
Перемещение домена в другую схему:
ALTER DOMAIN zipcode SET SCHEMA customers;
ALTER DOMAIN соответствует стандарту SQL, за исключением вариантов OWNER, RENAME, SET SCHEMA и VALIDATE CONSTRAINT, которые являются расширениями Database. Клаузула NOT VALID варианта ADD CONSTRAINT также является расширением YMatrix Database.