FirebirdSQL logo
 SHADOWTABLE 

Qui peut créer un domaine ?

L’opérateur CREATE DOMAIN peut être utilisé par:

L’utilisateur qui crée un domaine devient le propriétaire de ce domaine.

Exemples

Example 1. Créer un domaine qui peut prendre des valeurs supérieures à 1000.
CREATE DOMAIN CUSTNO AS
INTEGER DEFAULT 10000
CHECK (VALUE > 1000);
Example 2. Créer un domaine qui peut prendre les valeurs "Oui" et "Non".
CREATE DOMAIN D_BOOLEAN AS
CHAR(3) CHECK (VALUE IN ('Oui', 'Non'));
Example 3. Création d’un domaine avec le jeu de caractères UTF8 et l’ordre de tri UNICODE_CI_AI.
CREATE DOMAIN FIRSTNAME AS
VARCHAR(30) CHARACTER SET UTF8
COLLATE UNICODE_CI_AI;
Example 4. Création d’un domaine avec une valeur par défaut.
CREATE DOMAIN D_DATE AS
DATE DEFAULT CURRENT_DATE
NOT NULL;
Example 5. Création d’un domaine défini comme un tableau de 2 éléments.

Création d’un domaine défini comme un tableau de 2 éléments de type NUMERIC(18, 3), en numérotant les éléments en commençant par 1.

CREATE DOMAIN D_POINT AS
NUMERIC(18, 3) [2];
Note

Vous pouvez uniquement utiliser des domaines définis comme un tableau pour définir les colonnes d’une table.Vous ne pouvez pas utiliser de tels domaines pour définir les variables locales et les arguments des modules PSQL.

Voir aussi :

ALTER DOMAIN, DROP DOMAIN.

docnext count = 7

ALTER DOMAIN

Destination

Modifier les caractéristiques actuelles d’un domaine ou le renommer.

Disponible en

DSQL, ESQL.

Syntaxe
ALTER DOMAIN domain_name
  [TO new_name]
  [TYPE <datatype>]
  [{SET DEFAULT {<literal> | NULL | <context_var>}} | DROP DEFAULT]
  [{SET | DROP} NOT NULL]
  [{ADD [CONSTRAINT] CHECK (<dom_condition>)} | DROP CONSTRAINT]

<datatype> ::=
    <scalar_datatype> | <blob_datatype> | <array_datatype>

<scalar_datatype> ::= Voir Syntaxe des types de données scalaires.

<blob_datatype> ::= Voir Syntaxe du type de données BLOB.

<array_datatype> ::= Voir syntaxe des tableaux.

<dom_condition> ::=
    <val> <operator> <val>
  | <val> [NOT] BETWEEN <val> AND <val>
  | <val> [NOT] IN (<val> [, <val> ...] | <select_list>)
  | <val> IS [NOT] NULL
  | <val> IS [NOT] DISTINCT <val>
  | <val> IS [NOT] {TRUE | FALSE | UNKNOWN}
  | <val> [NOT] CONTAINING <val>
  | <val> [NOT] STARTING [WITH] <val>
  | <val> [NOT] LIKE <val> [ESCAPE <val>]
  | <val> [NOT] SIMILAR TO <val> [ESCAPE <val>]
  | <val> <operator> {ALL | SOME | ANY} (<select_list>)
  | [NOT] EXISTS (<select_expr>)
  | [NOT] SINGULAR (<select_expr>)
  | (<dom_condition>)
  | NOT <dom_condition>
  | <dom_condition> OR <dom_condition>
  | <dom_condition> AND <dom_condition>


<operator> ::=
    <> | != | ^= | ~= | = | < | > | <= | >=
  | !< | ^< | ~< | !> | ^> | ~>

<val> ::=
    VALUE
  | <literal>
  | <context_var>
  | <expression>
  | NULL
  | NEXT VALUE FOR genname
  | GEN_ID(genname, <val>)
  | CAST(<val> AS <cast_type>)
  | (<select_one>)
  | func(<val> [, <val> ...])


<cast_type> ::=
   <datatype>
  | [TYPE OF] domain
  | TYPE OF COLUMN rel.col
Table 1. Paramètres de l’opérateur ALTER DOMAIN
Paramètre Description

domain_name

Nom de domaine.

new_name

Nouveau nom de domaine.Peut contenir jusqu’à 63 caractères.

datatype

Type de données SQL.

literal

Litéral.

context_var

Toute variable contextuelle dont le type est compatible avec le type de données du domaine.

dom_condition

Condition du domaine.

collation

Ordre de tri.

select_one

L’opérateur SELECT sélectionne une colonne et renvoie une seule ligne.

select_list

L’opérateur SELECT sélectionne une colonne et retourne zéro ou plusieurs lignes.

select_expr

L’opérateur SELECT sélectionne plusieurs colonnes et renvoie zéro ou plusieurs lignes.

expression

Expression.

genname

Le nom de la séquence (générateur).

func

Fonction scalaire.

L’instruction ALTER DOMAIN modifie les caractéristiques actuelles d’un domaine, y compris son nom.Un nombre quelconque de changements de domaine peut être effectué dans une seule instruction ALTER DOMAIN.

TO name

La suggestion TO vous permet de renommer un domaine.Un nom de domaine peut être modifié s’il n’y a pas de dépendances sur ce domaine, c’est-à-direles colonnes des tables, les variables locales et les arguments des procédures faisant référence à ce domaine.

SET DEFAULT

La phrase SET DEFAULT permet de définir une nouvelle valeur par défaut.Si le domaine contenait déjà une valeur par défaut, la définition d’une nouvelle valeur par défaut ne nécessite pas la suppression préalable de l’ancienne.

DROP DEFAULT

La clause DROP DEFAULT supprime la valeur par défaut précédemment définie pour le domaine.Dans ce cas, la valeur par défaut devient NULL.

ADD CONSTRAINT CHECK

La phrase ADD [CONSTRAINT] CHECK ajoute une condition de restriction de domaine.Si le domaine contenait déjà une restriction CHECK, il faut d’abord la supprimer avec la phrase DROP CONSTRAINT.

TYPE

La suggestion TYPE vous permet de changer le type de domaine en un autre type valide.Tout type de modification qui entraînerait une perte de données n’est pas autorisé.Par exemple, le nombre de caractères du nouveau type de domaine ne peut pas être inférieur à celui qui a été défini précédemment.

Note

La modification du type n’est pas prise en charge pour le type BLOB et les tableaux.

SET NOT NULL

La phrase SET NOT NULL fixe une limite de NOT NULL pour le domaine.Dans ce cas, NULL n’est pas autorisé pour les variables et les colonnes basées sur le domaine.

Note

L’installation réussie d’une contrainte NOT NULL pour un domaine ne se produit qu’après une vérification complète des données des tables dont les colonnes sont basées sur le domaine.Cela peut prendre beaucoup de temps.

Warning

Si la description du domaine est modifiée, le code PSQL existant peut devenir invalide.Des informations sur la manière de détecter cela peuvent être trouvées dans Field RDB$VALID_BLR.

DROP NOT NULL

La phrase DROP NOT NULL supprime la restriction NOT NULL pour le domaine.

Ce qui ne peut pas changer ALTER DOMAIN

  • Si un domaine a été déclaré comme un tableau, alors ni son type ni sa dimension ne peuvent être modifiés. Il n’existe pas non plus de moyen de transformer un autre type en un type de tableau.

  • Il n’y a aucun moyen de modifier le tri par défaut. Dans ce cas, vous devez supprimer le domaine et le recréer avec les nouveaux attributs.

Qui peut changer le domaine ?

L’opérateur ALTER DOMAIN peut être exécuté :

  • Administrateurs

  • Le propriétaire du domaine ;

  • Les utilisateurs avec le privilège `ALTER ANY DOMAIN'

Exemples

Example 1. Modifiez la valeur par défaut du domaine.
ALTER DOMAIN CUSTNO
INTEGER DEFAULT 2000;
Example 2. Renommer un domaine.
ALTER DOMAIN D_BOOLEAN TO D_BOOL;
Example 3. Suppression de la valeur par défaut et ajout d’une limite pour le domaine.
ALTER DOMAIN D_DATE
DROP DEFAULT
ADD CONSTRAINT CHECK (VALUE >= date '01.01.2000');
Example 4. Modification de la restriction de domaine.
ALTER DOMAIN D_DATE
DROP CONSTRAINT;

ALTER DOMAIN D_DATE
ADD CONSTRAINT CHECK
(VALUE BETWEEN date '01.01.1900' AND date '31.12.2100');
Example 5. Changer le type de domaine.
ALTER DOMAIN FIRSTNAME
TYPE VARCHAR(50) CHARACTER SET UTF8;
Example 6. Ajout d’une restriction NOT NULL au domaine.
ALTER DOMAIN FIRSTNAME SET NOT NULL;
Voir aussi :

CREATE DOMAIN, DROP DOMAIN.

DROP DOMAIN

Destination

Suppression d’un domaine existant.

Disponible en

DSQL, ESQL.

Syntaxe
DROP DOMAIN domain_name
Table 1. Paramètres de l’opérateur DROP DOMAIN
Paramètre Description

domain_name

Nom de domaine.

L’opérateur DROP DOMAIN supprime un domaine qui existe dans la base de données.Il n’est pas possible de supprimer un domaine qui est référencé par des colonnes de tables de base de données ou s’il a été invoqué dans l’un des modules PSQL.Pour supprimer un tel domaine, vous devez supprimer toutes les colonnes faisant référence au domaine dans les tables et supprimer toutes les références au domaine dans les modules PSQL.

Qui peut supprimer un domaine ?

L’instruction DROP DOMAIN peut être exécutée :

  • Administrators

  • Le propriétaire du domaine ;

  • Les utilisateurs ayant le privilège `DROP ANY DOMAIN'.

Exemples

Suppression d’un domaine

DROP DOMAIN COUNTRYNAME;
Voir aussi :

CREATE DOMAIN, ALTER DOMAIN.