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 DOMAIN
Modifier 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 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.
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.
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 DOMAIN
Suppression 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;