ALTER DATABASE — Modifier une base de données
ALTER DATABASEnom
[ [ WITH ]option
[ ... ] ] oùoption
peut être : ALLOW_CONNECTIONSallowconn
CONNECTION LIMITlimite_connexion
IS_TEMPLATEistemplate
ALTER DATABASEnom
RENAME TOnouveau_nom
ALTER DATABASEnom
OWNER TO {nouveau_propriétaire
| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER DATABASEnom
SET TABLESPACEnouveau_tablespace
ALTER DATABASEnom
SETparamètre
{ TO | = } {valeur
| DEFAULT } ALTER DATABASEnom
SETparamètre
FROM CURRENT ALTER DATABASEnom
RESETparamètre
ALTER DATABASEnom
RESET ALL
ALTER DATABASE
modifie les attributs d'une base de
données.
La première forme modifie certains paramètres d'une base de données (voir ci-dessous pour les détails). Seul le propriétaire de la base de données ou un super-utilisateur peut modifier ces paramètres.
La deuxième forme permet de renommer la base. Seul le propriétaire ou un
super-utilisateur peut renommer une base. Un propriétaire qui n'est pas super-utilisateur
doit en outre posséder le droit CREATEDB
. La base en cours
d'utilisation ne peut pas être renommée (on se connectera à une base différente
pour réaliser cette opération).
La troisième forme change le propriétaire de la base de données.
Pour changer le propriétaire, il faut être propriétaire de la base
de données et membre direct ou indirect du nouveau rôle
propriétaire. Le droit CREATEDB
est également requis
(les super-utilisateurs ont automatiquement tous ces droits).
La quatrième forme change le tablespace par défaut de la base de données. Seuls le propriétaire de la base de données et un super-utilisateur peuvent le faire ; vous devez aussi avoir le droit CREATE pour le nouveau tablespace. Cette commande déplace physiquement toutes tables et index actuellement dans l'ancien tablespace par défaut de la base de données vers le nouveau tablespace. Le nouveau tablespace par défaut doit être vide pour cette base de données, et personne ne peut être connecté à la base de données. Les tables et index placés dans d'autres tablespaces ne sont pas affectés.
Les formes restantes modifient la valeur par défaut d'un paramètre de
configuration pour une base PostgreSQL. Par la
suite, à chaque fois qu'une nouvelle session est lancée, la valeur
spécifique devient la valeur par défaut de la session. Les valeurs par
défaut de la base deviennent les valeurs par défaut de la session. En fait,
elles surchargent tout paramètre présent dans
postgresql.conf
ou indiqué sur la ligne de commande de
postgres
. Seul le propriétaire de la base de données ou
un super-utilisateur peut modifier les valeurs par défaut de la session pour
une base. Certaines variables ne peuvent pas être configurées de cette
façon pour une base de données ou peuvent seulement être configurées par un
super-utilisateur.
nom
Le nom de la base dont les attributs sont à modifier.
allowconn
Personne ne peut se connecter à cette base de données lorsque cette option est à false.
limite_connexion
Le nombre de connexions concurrentes sur la base de données. -1 signifie aucune limite.
istemplate
À true, cette base peut être clonée par tout utilisateur ayant
l'attribut CREATEDB
. À false, seuls les
super-utilisateurs et le propriétaire de la base de données peuvent la
cloner.
nouveau_nom
Le nouveau nom de la base.
nouveau_propriétaire
Le nouveau propriétaire de la base.
nouveau_tablespace
Le nouveau tablespace par défaut de la base de données.
Cette forme de commande ne peut pas être exécutée dans un bloc de transaction.
paramètre
valeur
Configure cette valeur comme valeur par défaut de la base pour le
paramètre de configuration précisée. Si
valeur
indique DEFAULT
ou, de façon équivalente, si RESET
est utilisé, le
paramètrage en cours pour cette base est supprimée, donc la valeur
système est utilisée pour les nouvelles sessions. Utiliser RESET
ALL
permet de supprimer tous les paramètres spécifiques de
cette base. SET FROM CURRENT
sauvegarde la valeur actuelle
du paramètre en tant que valeur spécifique de la base.
Voir SET et Chapitre 20 pour plus d'informations sur les noms de paramètres et valeurs autorisées.
Il est possible de lier une valeur de session par défaut à un rôle plutôt qu'à une base. Voir ALTER ROLE à ce propos. En cas de conflit, les configurations spécifiques au rôle l'emportent sur celles spécifiques à la base.
Désactiver les parcours d'index par défaut de la base
test
:
ALTER DATABASE test SET enable_indexscan TO off;
La commande ALTER DATABASE
est une extension
PostgreSQL.