ALTER INDEX
ALTER INDEX — изменить определение индекса
Синтаксис
ALTER INDEX [ IF EXISTS ]имяRENAME TOновое_имяALTER INDEX [ IF EXISTS ]имяSET TABLESPACEтабл_пространствоALTER INDEX [ IF EXISTS ]имяSET (параметр_хранения=значение[, ... ] ) ALTER INDEX [ IF EXISTS ]имяRESET (параметр_хранения[, ... ] ) ALTER INDEX ALL IN TABLESPACEимя[ OWNED BYимя_роли[, ... ] ] SET TABLESPACEновое_табл_пространство[ NOWAIT ]
Описание
ALTER INDEX меняет определение существующего индекса. Эта команда имеет несколько разновидностей:
RENAMEФорма
RENAMEменяет имя индекса. На сохранённые данные это не влияет.SET TABLESPACEЭта форма меняет табличное пространство индекса на заданное и переносит в него файл(ы) данных, связанные с индексом. Для изменения табличного пространства индекса нужно быть владельцем индекса и иметь право
CREATEв новом табличном пространстве. ФормаALL IN TABLESPACEпозволяет перенести из заданного пространства все индексы в текущей базе данных, блокируя их для перемещения и затем перемещая каждый индекс. Эта форма также поддерживает указаниеOWNED BY, с которым будут перемещены только индексы, принадлежащие заданным ролям. Если указан параметрNOWAIT, команда завершится ошибкой, если не сможет немедленно получить все требуемые блокировки. Заметьте, что эта команда не переместит системные каталоги; вместо неё следует использоватьALTER DATABASEили явные вызовыALTER INDEX. См. также CREATE TABLESPACE.SET (параметр_хранения=значение[, ... ] )Эта форма настраивает один или несколько специфичных для индекса параметров хранения. Список доступных параметров приведён в CREATE INDEX. Заметьте, что эта команда не меняет содержимое индекса немедленно; для получения желаемого эффекта в зависимости от параметров может потребоваться перестроить индекс командой REINDEX.
RESET (параметр_хранения[, ... ] )Эта форма сбрасывает один или несколько специфичных для индекса параметров хранения к значениям по умолчанию. Как и с
SET, для полного обновления индекса может потребоваться выполнитьREINDEX.
Параметры
IF EXISTSНе считать ошибкой, если индекс не существует. В этом случае будет выдано замечание.
имяИмя (возможно, дополненное схемой) существующего индекса, подлежащего изменению.
новое_имяНовое имя индекса.
табл_пространствоТабличное пространство, в которое будет перемещён индекс.
параметр_храненияИмя специфичного для индекса параметра хранения.
значениеНовое значение специфичного для индекса параметра хранения. Это может быть число или строка, в зависимости от параметра.
Замечания
Эти операции также возможно выполнить с помощью ALTER TABLE. На самом деле ALTER INDEX — это просто синоним нескольких форм ALTER TABLE, работающих с индексами.
Ранее существовала форма ALTER INDEX OWNER, но сейчас она игнорируется (с предупреждением). Владельцем индекса может быть только владелец соответствующей таблицы. При смене владельца таблицы владелец индекса меняется автоматически.
Какие-либо изменения индексов системного каталога не допускаются.
Примеры
Переименование существующего индекса:
ALTER INDEX distributors RENAME TO suppliers;
Перемещение индекса в другое табличное пространство:
ALTER INDEX distributors SET TABLESPACE fasttablespace;
Изменение фактора заполнения индекса (предполагается, что это поддерживает метод индекса):
ALTER INDEX distributors SET (fillfactor = 75); REINDEX INDEX distributors;
Совместимость
ALTER INDEX является расширением Postgres Pro.