Qui peut créer un domaine ?
L’opérateur CREATE DOMAIN peut être utilisé par:
-
Utilisateurs avec le privilège
CREATE DOMAIN.
L’utilisateur qui crée un domaine devient le propriétaire de ce domaine.
L’opérateur CREATE DOMAIN peut être utilisé par:
Utilisateurs avec le privilège CREATE DOMAIN.
L’utilisateur qui crée un domaine devient le propriétaire de ce domaine.
CREATE DOMAIN CUSTNO AS
INTEGER DEFAULT 10000
CHECK (VALUE > 1000);
CREATE DOMAIN D_BOOLEAN AS
CHAR(3) CHECK (VALUE IN ('Oui', 'Non'));
UTF8 et l’ordre de tri UNICODE_CI_AI.CREATE DOMAIN FIRSTNAME AS
VARCHAR(30) CHARACTER SET UTF8
COLLATE UNICODE_CI_AI;
CREATE DOMAIN D_DATE AS
DATE DEFAULT CURRENT_DATE
NOT NULL;
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. |
ALTER DOMAINModifier les caractéristiques actuelles d’un domaine ou le renommer.
DSQL, ESQL.
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
| 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_list |
L’opérateur |
select_expr |
L’opérateur |
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 nameLa 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 DEFAULTLa 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 DEFAULTLa 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 CHECKLa 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.
TYPELa 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 NULLLa 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 NULLLa phrase DROP NOT NULL supprime la restriction NOT NULL pour le domaine.
ALTER DOMAINSi 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.
L’opérateur ALTER DOMAIN peut être exécuté :
Le propriétaire du domaine ;
Les utilisateurs avec le privilège `ALTER ANY DOMAIN'
ALTER DOMAIN CUSTNO
INTEGER DEFAULT 2000;
ALTER DOMAIN D_BOOLEAN TO D_BOOL;
ALTER DOMAIN D_DATE
DROP DEFAULT
ADD CONSTRAINT CHECK (VALUE >= date '01.01.2000');
ALTER DOMAIN D_DATE
DROP CONSTRAINT;
ALTER DOMAIN D_DATE
ADD CONSTRAINT CHECK
(VALUE BETWEEN date '01.01.1900' AND date '31.12.2100');
ALTER DOMAIN FIRSTNAME
TYPE VARCHAR(50) CHARACTER SET UTF8;
ALTER DOMAIN FIRSTNAME SET NOT NULL;
DROP DOMAINSuppression d’un domaine existant.
DSQL, ESQL.
DROP DOMAIN domain_name
| 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.
L’instruction DROP DOMAIN peut être exécutée :
Le propriétaire du domaine ;
Les utilisateurs ayant le privilège `DROP ANY DOMAIN'.
Suppression d’un domaine
DROP DOMAIN COUNTRYNAME;