Быстрый старт
Развертывание
Моделирование данных
Подключение
Запись данных
Миграция
Запросы
Операции и обслуживание
Типовое обслуживание
Секционирование
Резервное копирование и восстановление
Масштабирование
Зеркалирование
Управление ресурсами
Безопасность
Мониторинг
Настройка производительности
Устранение неполадок
Справочник
Руководство по инструментам
Типы данных
Хранилище данных
Выполняющая система
Потоковая передача
Восстановление после сбоев
Конфигурация
Индексы
Расширения
Справочник по SQL
Часто задаваемые вопросы
Изменение определения типа данных.
ALTER TYPE name action [, ... ]
ALTER TYPE name OWNER TO new_owner
ALTER TYPE name RENAME ATTRIBUTE attribute_name TO new_attribute_name [ CASCADE | RESTRICT ]
ALTER TYPE name RENAME TO new_name
ALTER TYPE name SET SCHEMA new_schema
ALTER TYPE name ADD VALUE [ IF NOT EXISTS ] new_enum_value [ { BEFORE | AFTER } existing_enum_value ]
ALTER TYPE name SET DEFAULT ENCODING ( storage_directive )
где action — один из следующих вариантов:
ADD ATTRIBUTE attribute_name data_type [ COLLATE collation ] [ CASCADE | RESTRICT ]
DROP ATTRIBUTE [ IF EXISTS ] attribute_name [ CASCADE | RESTRICT ]
ALTER ATTRIBUTE attribute_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ CASCADE | RESTRICT ]
где storage_directive:
COMPRESSTYPE={ZLIB | ZSTD | QUICKLZ | RLE_TYPE | NONE}
COMPRESSLEVEL={0-19}
BLOCKSIZE={8192-2097152}
ALTER TYPE изменяет определение существующего типа. Существует несколько подформ:
Операции ADD ATTRIBUTE, DROP ATTRIBUTE и ALTER ATTRIBUTE могут быть объединены в список нескольких изменений для одновременного применения. Например, можно добавить несколько атрибутов и/или изменить типы нескольких атрибутов в одной команде.
Можно изменять схему, владельцев и имена типов. Также можно добавлять или обновлять параметры хранения для скалярных типов.
Примечание: База данных YMatrix не поддерживает добавление параметров хранения для строк или составных типов.
Для использования ALTER TYPE необходимо иметь права на данный тип. Чтобы изменить схему типа, вы также должны обладать привилегией CREATE для новой схемы. Чтобы изменить владельца, вы должны быть прямым или косвенным членом новой роли-владельца, и эта роль должна иметь привилегию CREATE для схемы типа. (Эти ограничения заставляют пользователя, меняющего владельца, не выполнять действия по удалению и повторному созданию типа. Однако суперпользователи могут изменять владельца любого типа.) Для добавления или изменения типа свойства необходимо также иметь привилегию USAGE для соответствующего типа данных.
Команда ALTER TYPE ... ADD VALUE (добавление нового значения в перечисляемый тип) не может выполняться внутри блока транзакции.
Сравнения, включающие расширенные значения перечислений, иногда выполняются медленнее, чем сравнения только с исходными элементами типа enum. Обычно это происходит, когда вы задаёте позицию сортировки нового значения (не в конце списка) с помощью BEFORE или AFTER. Однако иногда замедление наблюдается даже при добавлении значения в конец (это происходит, если счётчик OID «переполнился» с момента первоначального создания типа enum). Тем не менее, снижение производительности обычно незначительно. Если это критично, можно восстановить максимальную производительность, удалив и заново создав тип enum либо выполнив дамп и перезагрузку базы данных.
name
new_name
new_owner
new_schema
attribute_name
new_attribute_name
data_type
new_enum_value
existing_enum_value
storage_directive
Переименовать тип данных с именем electronic_mail:
ALTER TYPE electronic_mail RENAME TO email;
Изменить владельца пользовательского типа email на joe:
ALTER TYPE email OWNER TO joe;
Переместить пользовательский тип email в схему customers:
ALTER TYPE email SET SCHEMA customers;
Установить или изменить тип сжатия и уровень сжатия для пользовательского типа с именем int33:
ALTER TYPE int33 SET DEFAULT ENCODING (compresstype=zlib, compresslevel=7);
Добавить новое свойство к типу:
ALTER TYPE compfoo ADD ATTRIBUTE f3 int;
Добавить новое значение в перечисляемый тип с указанием конкретной позиции в порядке сортировки:
ALTER TYPE colors ADD VALUE 'orange' AFTER 'red';
Добавление и удаление атрибутов является частью стандарта SQL. Остальные формы являются расширением базы данных YMatrix.