ALTER DOMAIN — Modifier la définition d'un domaine
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
ALTER DOMAIN modifie la définition d'un domaine. Il existe plusieurs sous-formes :
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.
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.
Cette forme ajoute une nouvelle contrainte à un domaine avec la même syntaxe que CREATE DOMAIN(7). Ceci ne fonctionne que lorsque toutes les colonnes qui utilisent le domaine satisfont à la nouvelle contrainte.
Cette forme supprime les contraintes sur un domaine.
Cette forme change le propriétaire du domaine.
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.
Le nom du domaine à modifier.
Nouvelle contrainte de domaine pour le domaine.
Le nom d'une contrainte à supprimer.
Les objets qui dépendent de la contrainte sont automatiquement supprimés.
La contrainte n'est pas supprimée si des objets en dépendent. C'est le comportement par défaut.
Le nom de l'utilisateur nouveau propriétaire du domaine.
Le nouveau schéma du domaine.
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.
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;