144
Chapitre 6 • SQL avancé
• la colonne fictive LEVEL est disponible dans les clauses select et where;
elle représente le numéro de niveau dans l’arbre de parcours, la racine (ici
NPERS = 'p4') étant au niveau 1;
• la requête échoue lorsqu’une ligne déjà extraite est sélectionnée à nouveau,
témoignant de l’existence d’un circuit.
Appliquée au contenu de la table PERSONNE de la figure 5.3, cette requête fournira
le résultat suivant :
6.4 LES PRÉDICATS (check)
Un prédicat est une condition associée à un schéma, à une table ou à une colonne.
Un prédicat lié à un schéma, le plus souvent dénommé assertion, définit une
propriété que la base de données doit respecter après chaque opération de modification. Ce type de prédicat étant rarement implémenté dans les SGBD, nous limiterons
notre discussion aux autres types.
Un prédicat de table ou de colonne définit une propriété que les lignes de la table
doivent respecter à tout instant. Un prédicat est évalué lors de toute modification
d'une ligne de la table. En cas de violation, la modification est rejetée.
Considérons par exemple que les valeurs de la colonne CAT sont limitées à une
liste prédéfinie. On écrira alors :
create table CLIENT ( NCLI ...,
...,
CAT
char(2),
primary key (NCLI),
check (CAT is null or
CAT in ('B1','B2','C1','C2'))
Cette contrainte peut être ajoutée a posteriori :
alter table CLIENT
add check (CAT is null or CAT in ('B1','B2','C1','C2'))
La forme suivante permet de nommer la contrainte 12 :
LEVEL
NPERS
NOM
RESPONSABLE
1
2
3
3
p4
p5
p6
p7
Dupont
Verger
Dupont
Dermiez
p1
p4
p4
p6
12. Aussi valable dans la déclaration de la table :
constraint CHK_CAT check (...)
Chapitre 6 • SQL avancé
• la colonne fictive LEVEL est disponible dans les clauses select et where;
elle représente le numéro de niveau dans l’arbre de parcours, la racine (ici
NPERS = 'p4') étant au niveau 1;
• la requête échoue lorsqu’une ligne déjà extraite est sélectionnée à nouveau,
témoignant de l’existence d’un circuit.
Appliquée au contenu de la table PERSONNE de la figure 5.3, cette requête fournira
le résultat suivant :
6.4 LES PRÉDICATS (check)
Un prédicat est une condition associée à un schéma, à une table ou à une colonne.
Un prédicat lié à un schéma, le plus souvent dénommé assertion, définit une
propriété que la base de données doit respecter après chaque opération de modification. Ce type de prédicat étant rarement implémenté dans les SGBD, nous limiterons
notre discussion aux autres types.
Un prédicat de table ou de colonne définit une propriété que les lignes de la table
doivent respecter à tout instant. Un prédicat est évalué lors de toute modification
d'une ligne de la table. En cas de violation, la modification est rejetée.
Considérons par exemple que les valeurs de la colonne CAT sont limitées à une
liste prédéfinie. On écrira alors :
create table CLIENT ( NCLI ...,
...,
CAT
char(2),
primary key (NCLI),
check (CAT is null or
CAT in ('B1','B2','C1','C2'))
Cette contrainte peut être ajoutée a posteriori :
alter table CLIENT
add check (CAT is null or CAT in ('B1','B2','C1','C2'))
La forme suivante permet de nommer la contrainte 12 :
LEVEL
NPERS
NOM
RESPONSABLE
1
2
3
3
p4
p5
p6
p7
Dupont
Verger
Dupont
Dermiez
p1
p4
p4
p6
12. Aussi valable dans la déclaration de la table :
constraint CHK_CAT check (...)
