CREATE DOMAIN
CREATE DOMAIN — Définir un nouveau domaine
Synopsis
CREATE DOMAIN nom [AS] type_donnee
[ DEFAULT expression ]
[ contrainte [ ... ] ]
où contrainte est :
[ CONSTRAINT nom_contrainte ]
{ NOT NULL | NULL | CHECK (expression) }
Description
CREATE DOMAIN
crée un
nouveau domaine. Un domaine est essentiellement un type de données
avec des contraintes optionnelles (restrictions sur l'ensemble de
valeurs autorisées). L'utilisateur qui définit un domaine devient
son propriétaire.
Si un nom de schéma est donné (par exemple, CREATE DOMAIN monschema.mondomaine ...), alors le
domaine est créé dans le schéma spécifié. Sinon, il est créé dans
le schéma courant. Le nom du domaine doit être unique parmi les
types et domaines existant dans son schéma.
Les domaines permettent d'extraire des constraintes communes à
plusieurs tables et de les regrouper en un seul emplacement, ce qui
en facilite la maintenance. Par exemple, plusieurs tables
pourraient contenir des colonnes d'adresses email, toutes
nécessitant la même contrainte de vérification (CHECK) permettant
de vérifier que le contenu de la colonne est bien une adresse
email. Définissez un domaine plutôt que de configurer la contrainte
individuellement sur chaque table.
Paramètres
-
nom
-
Le nom du domaine à créer (éventuellement qualifié du nom du
schéma).
-
type_donnees
-
Le type de données sous-jacent au domaine. Il peut contenir
des spécifications de tableau.
-
DEFAULT
expression
-
La clause DEFAULT permet de définir
une valeur par défaut pour les colonnes d'un type de données
du domaine. La valeur est une expression quelconque sans
variable (les sous-requêtes ne sont pas autorisées). Le type
de données de l'expression par défaut doit correspondre à
celui du domaine. Si la valeur par défaut n'est pas indiquée,
alors il s'agit de la valeur NULL.
L'expression par défaut est utilisée dans toute opération
d'insertion qui ne spécifie pas de valeur pour cette colonne.
Si une valeur par défaut est définie sur une colonne
particulière, elle surcharge toute valeur par défaut du
domaine. De même, la valeur par défaut surcharge toute valeur
par défaut associée au type de données sous-jacent.
-
CONSTRAINT
nom_contrainte
-
Un nom optionnel pour une contrainte. S'il n'est pas
spécifié, le système en engendre un.
-
NOT NULL
-
Les valeurs de ce domaine ne peuvent pas être NULL.
-
NULL
-
Les valeurs de ce domaine peuvent être NULL. C'est la valeur
par défaut.
Cette clause a pour seul but la compatibilité avec les bases
de données SQL non standard. Son utilisation est découragée
dans les applications nouvelles.
-
CHECK (
expression
)
-
Les clauses CHECK spécifient des
contraintes d'intégrité ou des tests que les valeurs du
domaine doivent satisfaire. Chaque contrainte doit être une
expression produisant un résultat booléen. VALUE est obligatoirement utilisé pour se
référer à la valeur testée.
Actuellement, les expressions CHECK
ne peuvent ni contenir de sous-requêtes ni se référer à des
variables autres que VALUE.
Exemples
Créer le type de données code_postal_us,
et l'utiliser dans la définition d'une table. Un test d'expression
rationnelle est utilisé pour vérifier que la valeur ressemble à un
code postal US valide.
CREATE DOMAIN code_postal_us AS TEXT
CHECK(
VALUE ~ '^\\d{5}$'
OR VALUE ~ '^\\d{5}-\\d{4}$'
);
CREATE TABLE courrier_us (
id_adresse SERIAL PRIMARY KEY,
rue1 TEXT NOT NULL,
rue2 TEXT,
rue3 TEXT,
ville TEXT NOT NULL,
code_postal code_postal_us NOT NULL
);
Compatibilité
La commande
CREATE
DOMAIN
est conforme au standard SQL.