PostgreSQLLa base de données la plus sophistiquée au monde.

Version anglaise

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 [ NOT VALID ]
ALTER DOMAIN nom
    DROP CONSTRAINT [ IF EXISTS ] nom_de_contrainte [ RESTRICT | CASCADE ]
ALTER DOMAIN nom
     RENAME CONSTRAINT nom_de_contrainte TO nouveau_nom_de_contrainte
ALTER DOMAIN nom
    VALIDATE CONSTRAINT nom_de_contrainte
ALTER DOMAIN nom
    OWNER TO nouveau_propriétaire 
ALTER DOMAIN nom
    RENAME TO nouveau_nom
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 [ NOT VALID ]

Cette forme ajoute une nouvelle contrainte à un domaine avec la même syntaxe que CREATE DOMAIN(7). Lorsqu'une nouvelle contrainte est ajoutée à un domaine, toutes les colonnes utilisant ce domaine seront vérifiées avec cette nouvelle contrainte. Cette vérification initiale peut être annulée en ajoutant l'option NOT VALID lors de l'ajout de la nouvelle contrainte ; la contrainte pourra à nouveau être activée en utilisant la commande ALTER DOMAIN ... VALIDATE CONSTRAINT. Les lignes nouvellement ajoutées ou modifiées sont toujours vérifiées pour l'ensemble des contraintes, y compris celles marquées NOT VALID. À noter enfin que l'option NOT VALID n'est acceptée que pour les contraintes de type CHECK.

DROP CONSTRAINT [ IF EXISTS ]

Cette forme supprime les contraintes sur un domaine. Si l'option IF EXISTS est spécifiée et que la contrainte n'existe pas, aucune erreur n'est retournée. Dans ce cas, un simple message d'avertissement est retourné.

RENAME CONSTRAINT

Cette forme modifie le nom de la contrainte d'un domaine.

VALIDATE CONSTRAINT

Cette forme valide une contrainte ajoutée précédemment avec l'option NOT VALID, c'est-à-dire qu'elle vérifie que les données de chaque colonne utilisant le domaine satisfont la contrainte spécifiée.

OWNER

Cette forme change le propriétaire du domaine.

RENAME

Cette forme modifie le nom 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 ou renommer.

NOT VALID

Ne vérifie pas la validité de la contrainte appliquée aux données des colonnes existantes.

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_nom

Le nouveau nom du domaine.

nouveau_nom_de_contrainte

Le nouveau nom de la contrainte.

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;

Pour renommer une contrainte de contrôle d'un domaine :

ALTER DOMAIN codezip RENAME CONSTRAINT verif_zip TO zip_verif;

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, RENAME, SET SCHEMA et VALIDATE CONSTRAINT, qui sont des extensions PostgreSQL™. L'option NOT VALID de la variante ADD CONSTRAINT est elle-aussi une extension de PostgreSQL™.