ALTER DOMAIN
ALTER DOMAIN — Modifier la définition d'un domaine
Synopsis
ALTER DOMAIN nom
{ SET DEFAULT expression | DROP DEFAULT }
ALTER DOMAIN nom
{ SET | DROP } NOT NULL
ALTER DOMAIN nom
ADD contrainte_de_domaine
ALTER DOMAIN nom
DROP CONSTRAINT nom_de_contrainte [ RESTRICT | CASCADE ]
ALTER DOMAIN nom
OWNER TO nouveau_propriétaire
ALTER DOMAIN nom
SET SCHEMA nouveau_schema
Description
ALTER DOMAIN
modifie
la définition d'un domaine. Il existe plusieurs sous-formes :
-
SET/DROP DEFAULT
-
Ces formes positionnent ou suppriment la valeur par défaut
d'un domaine. Les valeurs par défaut ne s'appliquent qu'aux
commandes
INSERT
ultérieures ; les
colonnes d'une table qui utilise déjà le domaine ne sont pas
affectées.
-
SET/DROP NOT NULL
-
Ces formes agissent sur l'acceptation ou le rejet des valeurs
NULL par un domaine. SET NOT NULL ne
peut être utilisé que si les colonnes qui utilisent le
domaine contiennent des valeurs non nulles.
-
ADD
contrainte
de domaine
-
Cette forme ajoute une nouvelle contrainte à un domaine avec
la même syntaxe que CREATE
DOMAIN. Ceci ne fonctionne que lorsque toutes les
colonnes qui utilisent le domaine satisfont à la nouvelle
contrainte.
-
DROP CONSTRAINT
-
Cette forme supprime les contraintes sur un domaine.
-
OWNER
-
Cette forme change le propriétaire du domaine.
-
SET SCHEMA
-
Cette forme change le schéma du domaine. Toute contrainte
associée au domaine est déplacée dans le nouveau schéma.
Seul le propriétaire de la fonction d'agrégat peut utiliser
ALTER AGGREGATE
.
Seul le propriétaire du domaine peut utiliser
ALTER DOMAIN
. Pour modifier le
schéma d'un domaine, le droit CREATE sur
le nouveau schéma est également requis. Pour modifier le
propriétaire, il faut être un membre direct ou indirect du nouveau
rôle propriétaire et ce rôle doit avoir le droit CREATE sur le schéma du domaine. Ces restrictions
assurent que la modification du propriétaire n'agissent pas au-delà
de ce qui est réalisable en supprimant et en re-créant le domaine.
Toutefois, un superutilisateur peut modifier le propriétaire de
n'importe quel domaine.
Paramètres
-
nom
-
Le nom du domaine à modifier.
-
contrainte_de_domaine
-
Nouvelle contrainte de domaine pour le domaine.
-
nom_de_contrainte
-
Le nom d'une contrainte à supprimer.
-
CASCADE
-
Les objets qui dépendent de la contrainte sont
automatiquement supprimés.
-
RESTRICT
-
La contrainte n'est pas supprimée si des objets en dépendent.
C'est le comportement par défaut.
-
nouveau_propriétaire
-
Le nom de l'utilisateur nouveau propriétaire du domaine.
-
nouveau_schema
-
Le nouveau schéma du domaine.
Notes
Actuellement,
ALTER DOMAIN ADD
CONSTRAINT
et
ALTER
DOMAIN SET NOT NULL
échoueront si le domaine nommé
ou tout domaine dérivé est utilisé pour une colonne de type
composite dans toute table de la base de données. Il se pourrait
que cela soit amélioré pour vérifier la nouvelle contrainte sur ce
type de colonnes intégrées.
Exemples
Ajouter une contrainte NOT NULL à un
domaine :
ALTER DOMAIN codezip SET NOT NULL;
Supprimer une contrainte NOT NULL d'un
domaine :
ALTER DOMAIN codezip DROP NOT NULL;
Ajouter une contrainte de contrôle à un domaine :
ALTER DOMAIN codezip ADD CONSTRAINT verif_zip CHECK (char_length(VALUE) = 5);
Supprimer une contrainte de contrôle d'un domaine :
ALTER DOMAIN codezip DROP CONSTRAINT verif_zip;
Déplacer le domaine dans un schéma différent :
ALTER DOMAIN zipcode SET SCHEMA customers;
Compatibilité
ALTER DOMAIN
se
conforme au standard SQL, à
l'exception des variantes OWNER et
SET SCHEMA, qui sont des extensions
PostgreSQL™.