ALTER INDEX — Modifier la définition d'un index
ALTER INDEX [ IF EXISTS ]nom
RENAME TOnouveau_nom
ALTER INDEX [ IF EXISTS ]nom
SET TABLESPACEnom_espacelogique
ALTER INDEXnom
DEPENDS ON EXTENSIONnom_extension
ALTER INDEX [ IF EXISTS ]nom
SET (parametre_stockage
[=valeur
] [, ... ] ) ALTER INDEX [ IF EXISTS ]nom
RESET (parametre_stockage
[, ... ] ) ALTER INDEX ALL IN TABLESPACEname
[ OWNED BYnom_rôle
[, ... ] ] SET TABLESPACEnew_tablespace
[ NOWAIT ]
ALTER INDEX
modifie la définition d'un index.
Il existe plusieurs formes de l'instruction :
RENAME
La forme RENAME
modifie le nom de l'index. Cela n'a
aucun effet sur les données stockées.
SET TABLESPACE
Cette forme remplace le tablespace de l'index par le tablespace
spécifié et déplace le(s) fichier(s) de données associé(s) à l'index
dans le nouveau tablespace. Pour modifier le tablespace d'un index, vous
devez être le propriétaire de l'index et avoir le droit
CREATE
sur le nouveau tablespace. Toutes les index
d'un tablespace de la base de données actuelle peuvent être déplacés en
utilisant la forme ALL IN TABLESPACE
, qui verrouillera
tous les index à déplacer, puis les déplacera un par un. Cette forme
supporte aussi la clause OWNED BY
, qui ne déplacera que
les index dont les propriétaires sont indiqués. Si l'option
NOWAIT
est spécifié, alors la commande échouera si
elle est incapable de récupérer immédiatement tous les verrous requis.
Notez que les catalogues systèmes ne seront pas déplacés par cette commande.
Dans ce cas, il faut utiliser ALTER DATABASE
ou
ALTER INDEX
. Voir aussi
CREATE TABLESPACE.
DEPENDS ON EXTENSION
Cette clause marque l'index comme dépendant de l'extension, pour qu'en cas de suppression de l'extension, l'index soit automatiquement supprimé.
SET ( paramètre_stockage
[= valeur
] [, ... ] )
Cette forme modifie un ou plusieurs paramètres spécifiques à la méthode d'indexage de cet index. Voir CREATE INDEX pour les détails sur les paramètres disponibles. Notez que le contenu de l'index ne sera pas immédiatement modifié par cette commande ; suivant le paramètre, vous pouvez avoir besoin de reconstruire l'index avec REINDEX pour obtenir l'effet désiré.
RESET ( paramètre_stockage
[, ... ] )
Cette forme réinitialise un ou plusieurs paramètres de stockage spécifiques
à la méthode d'indexage à leurs valeurs par défaut. Comme avec
SET
, un REINDEX
peut être nécessaire
pour mettre à jour l'index complètement.
IF EXISTS
Ne retourne par d'erreur si l'index n'existe pas. Seul un message d'avertissement est retourné dans ce cas.
nom
Le nom de l'index à modifier (éventuellement qualifié du nom du schéma).
nouveau_nom
Le nouveau nom de l'index.
nom_espacelogique
Le nom du tablespace dans lequel déplacer l'index.
nom_extension
Le nom de l'extension dont l'index dépend.
paramètre_stockage
Le nom du paramètre de stockage spécifique à la méthode d'indexage.
valeur
La nouvelle valeur du paramètre de stockage spécifique à la méthode d'indexage. Cette valeur peut être un nombre ou une chaîne suivant le paramètre.
Ces opérations sont aussi possibles en utilisant
ALTER TABLE.
ALTER INDEX
n'est en fait qu'un alias pour les formes
d'ALTER TABLE
qui s'appliquent aux index.
Auparavant, il existait une variante ALTER INDEX OWNER
mais
elle est maintenant ignorée (avec un message d'avertissement). Un index
ne peut pas avoir un propriétaire différent de celui de la table. Modifier
le propriétaire de la table modifie automatiquement celui de l'index.
Il est interdit de modifier toute partie d'un index du catalogue système.
Renommer un index existant :
ALTER INDEX distributeurs RENAME TO fournisseurs;
Déplacer un index dans un autre tablespace :
ALTER INDEX distributeurs SET TABLESPACE espacelogiquerapide;
Pour modifier le facteur de remplissage d'un index (en supposant que la méthode d'indexage le supporte) :
ALTER INDEX distributeurs SET (fillfactor = 75); REINDEX INDEX distributeurs;
ALTER INDEX
est une extension
PostgreSQL.