ALTER INDEX — modifica a definição de um índice
ALTER INDEX [ IF EXISTS ]nome_do_índice RENAME TOnovo_nomeALTER INDEX [ IF EXISTS ]nome_do_índice SET TABLESPACEnome_do_espaço_de_tabelasALTER INDEXnome_do_índice ATTACH PARTITIONnome_do_índiceALTER INDEXnome_do_índice [ NO ] DEPENDS ON EXTENSIONnome_da_extensãoALTER INDEX [ IF EXISTS ]nome_do_índice SET (parâmetro_de_armazenamento[=valor] [, ... ] ) ALTER INDEX [ IF EXISTS ]nome_do_índice RESET (parâmetro_de_armazenamento[, ... ] ) ALTER INDEX [ IF EXISTS ]nome_do_índice ALTER [ COLUMN ]número_da_colunaSET STATISTICSinteiroALTER INDEX ALL IN TABLESPACEnome_do_índice [ OWNED BYnome_da_role[, ... ] ] SET TABLESPACEnovo_espaço_de_tabelas[ NOWAIT ]
O comando ALTER INDEX altera a definição de um
índice existente.
Existem várias subformas descritas abaixo.
Note que o nível de bloqueio necessário pode ser diferente para
cada subforma.
É adquirido o bloqueio ACCESS EXCLUSIVE, a menos
que algum outro seja explicitamente indicado.
Quando vários subcomandos estão juntos, o bloqueio adquirido será
o mais estrito exigido por qualquer um dos subcomandos.
RENAME
A forma RENAME altera o nome do índice.
Se o índice estiver associado a uma restrição de tabela (seja
UNIQUE, PRIMARY KEY ou
EXCLUDE), a restrição também será renomeada.
Não há efeito sobre os dados armazenados.
Alterar o nome do índice adquire o bloqueio
SHARE UPDATE EXCLUSIVE.
SET TABLESPACE
Esta forma altera o espaço de tabelas do índice para o espaço de
tabelas especificado, e move o(s) arquivo(s) de dados associado(s)
ao índice para o novo espaço de tabelas.
Para alterar o espaço de tabelas de um índice, é necessário ser o
dono do índice e ter o privilégio CREATE no
novo espaço de tabelas.
Podem ser movidos todos os índices no banco de dados corrente em um
espaço de tabelas usando a forma ALL IN TABLESPACE,
que bloqueia todos os índices a serem movidos, e depois move cada
um deles.
Esta forma também permite OWNED BY, que move
apenas os índices pertencentes às funções de banco de dados
(roles) especificadas.
Se for especificada a opção NOWAIT, o comando
irá falhar se não conseguir obter todos os bloqueios necessários
imediatamente.
Note que os catálogos do sistema não são movidos por este
comando.
Neste caso, deve-se usar ALTER DATABASE, ou
uma chamada explícita de ALTER INDEX.
Veja também CREATE TABLESPACE.
ATTACH PARTITION nome_do_índiceFaz com que o índice indicado (possivelmente qualificado por esquema) seja anexado ao índice alterado. O índice indicado deve estar em uma partição da tabela que contém o índice que está sendo alterado, e ter uma definição equivalente. Um índice anexado não pode ser excluído por si só, sendo excluído automaticamente quando seu índice pai for excluído.
DEPENDS ON EXTENSION nome_da_extensãoNO DEPENDS ON EXTENSION nome_da_extensão
Esta forma marca o índice como dependente da extensão, ou não
mais dependente dessa extensão se for especificado
NO.
Um índice marcado como dependente de uma extensão é excluído
automaticamente quando a extensão é excluída.
SET ( parâmetro_de_armazenamento [= valor] [, ... ] )Esta forma altera um ou mais parâmetros de armazenamento, específicos do método de índice, para o índice. Veja CREATE INDEX para obter detalhes sobre os parâmetros disponíveis. Note que o conteúdo do índice não será modificado imediatamente por este comando; dependendo do parâmetro, pode ser necessário reconstruir o índice usando o comando REINDEX para obter os efeitos desejados.
RESET ( parâmetro_de_armazenamento [, ... ] )
Esta forma redefine um ou mais parâmetros de armazenamento,
específicos do método de índice, para seu valor padrão.
Assim como em SET, pode ser necessário usar o
comando REINDEX para atualizar o índice
completamente.
ALTER [ COLUMN ] número_da_coluna SET STATISTICS inteiroEsta forma define o valor para coleta de estatísticas por coluna para as operações ANALYZE subsequentes, mas só pode ser usada em colunas de índice definidas como uma expressão. Como as expressões não têm nome único, é usado o número ordinal da coluna do índice para se referir a elas. O valor pode ser definido no intervalo de 0 a 10000; como alternativa, pode ser definido como -1 para voltar a usar o valor de estatísticas padrão do sistema (default_statistics_target). Para obter mais informações sobre o uso de estatísticas pelo planejador de consultas do PostgreSQL, veja Estatísticas usadas pelo planejador.
IF EXISTSNão será relatado nenhum erro se o índice não existir. É emitido um aviso neste caso.
número_da_colunaO número ordinal refere-se à posição ordinal (da esquerda para a direita) da coluna do índice.
nome_do_índiceO nome (possivelmente qualificado pelo esquema) do índice existente a ser alterado.
novo_nomeO novo nome para o índice.
nome_do_espaço_de_tabelasO espaço de tabelas para o qual o índice será movido.
nome_da_extensãoO nome da extensão da qual o índice irá depender.
parâmetro_de_armazenamentoO nome do parâmetro de armazenamento específico do método de índice.
valorO novo valor para o parâmetro de armazenamento específico do método de índice. Pode ser um número ou uma palavra, dependendo do parâmetro.
Estas operações também são possíveis de serem feitas usando o
comando ALTER TABLE.
O comando ALTER INDEX é, na verdade, apenas um
alias para as formas de ALTER TABLE que se
aplicam a índices.
Antes, havia a variante ALTER INDEX OWNER,
mas agora é ignorada (com uma advertência).
O índice não pode ter um dono diferente do dono de sua tabela.
Alterar o dono da tabela também altera automaticamente o dono
do índice.
Alterar qualquer parte de um índice do catálogo do sistema não é permitido.
Para alterar o nome um índice existente:
ALTER INDEX distributors RENAME TO suppliers;
Para mover o índice para um espaço de tabelas diferente:
ALTER INDEX distributors SET TABLESPACE fasttablespace;
Para alterar o fator de preenchimento de um índice (supondo que o método de índice dê suporte a esta operação):
ALTER INDEX distributors SET (fillfactor = 75); REINDEX INDEX distributors;
Definir o valor para coleta de estatísticas de um índice de expressão:
CREATE INDEX coord_idx ON measured (x, y, (z + t)); ALTER INDEX coord_idx ALTER COLUMN 3 SET STATISTICS 1000;
O comando ALTER INDEX é uma extensão do
PostgreSQL à linguagem SQL.