CREATE DOMAIN

Nom

CREATE DOMAIN -- définit 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 de données. L'utilisateur définissant 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 actuel. Le nom du domaine doit être unique parmi les types et domaines existant dans son schéma.

Les domaines sont utiles pour faire une abstraction des champs communs entre deux tables en un seul emplacement. Par exemple, une colonne d'adresse de courrier électronique utilisé dans plusieurs tables, toutes avec les mêmes propriétés. Définissez un domaine et utilisez-le plutôt que de configurer les contraintes de chaque table individuellement.

Paramètres

nom

Le nom d'un domaine à créer (pouvant être qualifié du nom du schéma).

type_donnees

Le type de données sous-jacent du domaine. Il peut contenir des spécifications de tableau.

DEFAULT expression

La clause DEFAULT définit une valeur par défaut pour les colonnes d'un type de données domaine. La valeur correspond à toute expression de variable (mais les sous-requêtes ne sont pas autorisées). Le type de données de l'expression par défaut doit correspondre au type de données 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 sera utilisée dans toute opération d'insertion qui ne spécifierait pas de valeur pour cette colonne. Si une valeur par défaut est définie pour une colonne particulière, elle surcharge toute valeur par défaut associée avec le domaine. En retour, la valeur par défaut surcharge tout valeur par défaut associée avec le type de données sous-jacent.

CONSTRAINT nom_contrainte

Un nom optionnel pour une contrainte. Si non spécifié, le système en génère un.

NOT NULL

Les valeurs de ce domaine n'ont pas le droit d'être NULL.

NULL

Les valeurs de ce domaine peuvent être NULL. C'est la valeur par défaut.

Cette clause a seulement pour but la compatibilité avec les bases de données SQL non standard. Son utilisation n'est pas encouragée dans les nouvelles applications.

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. Elle devrait utiliser le nom VALUE pour se référer à la valeur en cours de tests.

Actuellement, les expressions CHECK ne peuvent ni contenir de sous-requêtes ni se référer à des variables autres que VALUE.

Exemples

Cet exemple crée le type de données code_postal_us, puis l'utilise 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 NOT NULL 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.

Voir aussi

ALTER DOMAIN, DROP DOMAIN