6.7 Le catalogue
147
© Dunod – La photocopie non autorisée est un délit.
L'exemple ci-dessous définit la modification automatique de la valeur de CAT
lorsque l'état du compte d'un client descend en dessous d'un certain seuil.
create trigger MAJ_CLI
before update of COMPTE on CLIENT
for each row
when (new.COMPTE < -10000)
begin
if old.CAT = 'B2'
then new.CAT := 'B1';
end if;
if old.CAT = 'C2'
then new.CAT := 'C1';
end if;
end;
Le trigger porte le nom de MAJ_CLI. L'événement déclencheur est la modification
de la colonne COMPTE de CLIENT (update of COMPTE on CLIENT). Pour chaque
ligne ainsi modifiée (for each row), et si la nouvelle valeur de COMPTE est inférieure à -10.000 (when new.COMPTE < -10000), alors, avant la modification
(before update), les valeurs de CAT sont rétrogradées de B2 en B1 et de C2 en
C1. Dans cette interprétation, old et new désignent respectivement les états de la
ligne en cours de modification avant et après la modification (update). En cas de
création (insert), seule la version new existe, tandis que pour une suppression
(delete), seule la version old est accessible. L'expression new.COMPTE désigne
donc la nouvelle valeur de COMPTE de la ligne courante. L'assignation new.CAT
:= 'B1' permet de modifier les valeurs de CAT avant l'enregistrement.
Remarque
La forme générale E-C-A peut être simplifiée, sans perte de généralité, comme suit :
before/after E
begin
if C then
A
end if
end
C’est d’ailleurs la seule forme admise par certains SGBD, tels que Firebird.
6.7 LE CATALOGUE
L’environnement des bases de données SQL comporte, outre les tables créées par
ses utilisateurs, une collection de tables dont le contenu décrit les structures de cette
base. Ces tables constituent le dictionnaire des données ou encore le catalogue du
système.
147
© Dunod – La photocopie non autorisée est un délit.
L'exemple ci-dessous définit la modification automatique de la valeur de CAT
lorsque l'état du compte d'un client descend en dessous d'un certain seuil.
create trigger MAJ_CLI
before update of COMPTE on CLIENT
for each row
when (new.COMPTE < -10000)
begin
if old.CAT = 'B2'
then new.CAT := 'B1';
end if;
if old.CAT = 'C2'
then new.CAT := 'C1';
end if;
end;
Le trigger porte le nom de MAJ_CLI. L'événement déclencheur est la modification
de la colonne COMPTE de CLIENT (update of COMPTE on CLIENT). Pour chaque
ligne ainsi modifiée (for each row), et si la nouvelle valeur de COMPTE est inférieure à -10.000 (when new.COMPTE < -10000), alors, avant la modification
(before update), les valeurs de CAT sont rétrogradées de B2 en B1 et de C2 en
C1. Dans cette interprétation, old et new désignent respectivement les états de la
ligne en cours de modification avant et après la modification (update). En cas de
création (insert), seule la version new existe, tandis que pour une suppression
(delete), seule la version old est accessible. L'expression new.COMPTE désigne
donc la nouvelle valeur de COMPTE de la ligne courante. L'assignation new.CAT
:= 'B1' permet de modifier les valeurs de CAT avant l'enregistrement.
Remarque
La forme générale E-C-A peut être simplifiée, sans perte de généralité, comme suit :
before/after E
begin
if C then
A
end if
end
C’est d’ailleurs la seule forme admise par certains SGBD, tels que Firebird.
6.7 LE CATALOGUE
L’environnement des bases de données SQL comporte, outre les tables créées par
ses utilisateurs, une collection de tables dont le contenu décrit les structures de cette
base. Ces tables constituent le dictionnaire des données ou encore le catalogue du
système.
