7.2 Les bases de données actives
173
© Dunod – La photocopie non autorisée est un délit.
d’eux, envoie le courriel et marque l’enregistrement comme étant traité. La table
ALERTE comporte trois colonnes : TRAITE, qui indique par un caractère ’*’ ou un
espace si l’enregistrement a ou non été traité, INSTANT donnant l’instant de la
survenance de l’événement et NPRO reprenant le produit en rupture de stock. Le
déclencheur doit s’activer lorsque la valeur de QSTOCK passe sous la barre de zéro,
et non quand elle est inférieure à zéro. On pourrait donc écrire :
create trigger RUPT_STOCK
after update of QSTOCK on PRODUIT
for each row
when (old.QSTOCK >= 0 and new.QSTOCK < 0)
begin
insert into ALERTE values (’ ’,current_timestamp,old.NPRO);
end;
7.2.5 Personnalisation des comportements standard
Le mécanisme des déclencheurs permet aussi de définir de manière personnalisée la
réaction du SGBD face à une tentative de violation d'une contrainte.
Considérons la clé étrangère NCLI de COMMANDE qui référence CLIENT. On
décide de ne pas déclarer cette clé étrangère par une clause foreign key, mais de
la gérer explicitement via des déclencheurs attachés aux tables CLIENT et
COMMANDE. La requête suivante définit la réaction à adopter lors de l'insertion
d'une ligne de COMMANDE à laquelle ne correspond aucune ligne de CLIENT. Il
s'agit d'un comportement du type correctif, qui ne s'oppose pas à l'opération litigieuse, mais qui corrige les données de manière à les rendre conformes à la
contrainte. En cas de problème, le déclencheur ajoute une ligne décrivant (très
sommairement !) le client manquant.
create trigger MAJ_CLIENT
after insert on COMMANDE
for each row
begin
if new.NCLI not in (select NCLI from CLIENT)
then insert into CLIENT (NCLI,NOM,ADRESSE,LOCALITE,COMPTE)
values (new.NCLI,'?','?','?',0)
end if;
end;
7.2.6 Intégration d’une règle de gestion dans la base de données
L’exemple de la section 6.6 traduisait une règle de gestion de l’entreprise. Il est
effectivement tentant d’introduire dans la base de données des opérations de gestion
qui traditionnellement sont réalisées par les programmes d’application eux-mêmes.
Le déclencheur suivant provoque la mise à jour du compte du client dès qu'un
nouveau détail est introduit. Il calcule le montant de ce détail et soustrait cette valeur
du compte du client concerné. D’autres déclencheurs devraient prendre en compte
Précédent

- 173/436

Suivant