174
Chapitre 7 • Applications avancées en SQL
les autres modifications susceptibles d’affecter la valeur de la colonne COMPTE.
Leur rédaction est laissée à l’initiative du lecteur.
create trigger MAJC
after insert on DETAIL
for each row
begin
update CLIENT
set COMPTE = COMPTE -
(new.QCOM*(select PRIX
from
PRODUIT
where NPRO = new.NPRO))
where CLIENT.NCLI in
(select NCLI
from
COMMANDE
where COMMANDE.NCOM = new.NCOM));
end
Pour en savoir plus
Le lecteur intéressé trouvera dans [Patton, 1999] et [Ceri, 1997] des matériaux plus
détaillés en matière de bases de données actives.
7.3 LES DONNÉES TEMPORELLES
Le temps est une dimension fondamentale dans de nombreux domaines d’application. Aussi la plupart des bases de données comprendront-elles des structures de
données représentant le temps. Au delà des colonnes décrivant la survenance
d’événements tels que naissances, livraisons, engagements ou dépenses (par
exemple DATECOM dans COMMANDE), nous dirons quelques mots sur les données
historiques, qui constituent le cas de figure le plus fréquent de données temporelles.
7.3.1 Représentation des données temporelles
L’un des modes de stockage habituels est illustré à la figure 7.2. 2
On y représente les états successifs de quelques clients, pour un nombre limité de
colonnes. Pour chaque état, on indique les valeurs des colonnes ainsi que la période
durant laquelle ces valeurs étaient courantes. On notera que les périodes [début, fin[
sont ouvertes à droite, la borne supérieure étant exclue 3 . L’état courant actuel d’un
client est caractérisé par fin = futur infini, ici conventionnellement représenté par
une date raisonnablement inaccessible 4 (1-01-3000). Les clients encore actifs sont
2. Le script de création et d’exploitation de cette base de données est disponible sur le site de
l’ouvrage.
3. Cette convention est choisie pour des raisons techniques : simplicité et efficacité de certaines
requêtes et indépendance de l’unité de temps.
Chapitre 7 • Applications avancées en SQL
les autres modifications susceptibles d’affecter la valeur de la colonne COMPTE.
Leur rédaction est laissée à l’initiative du lecteur.
create trigger MAJC
after insert on DETAIL
for each row
begin
update CLIENT
set COMPTE = COMPTE -
(new.QCOM*(select PRIX
from
PRODUIT
where NPRO = new.NPRO))
where CLIENT.NCLI in
(select NCLI
from
COMMANDE
where COMMANDE.NCOM = new.NCOM));
end
Pour en savoir plus
Le lecteur intéressé trouvera dans [Patton, 1999] et [Ceri, 1997] des matériaux plus
détaillés en matière de bases de données actives.
7.3 LES DONNÉES TEMPORELLES
Le temps est une dimension fondamentale dans de nombreux domaines d’application. Aussi la plupart des bases de données comprendront-elles des structures de
données représentant le temps. Au delà des colonnes décrivant la survenance
d’événements tels que naissances, livraisons, engagements ou dépenses (par
exemple DATECOM dans COMMANDE), nous dirons quelques mots sur les données
historiques, qui constituent le cas de figure le plus fréquent de données temporelles.
7.3.1 Représentation des données temporelles
L’un des modes de stockage habituels est illustré à la figure 7.2. 2
On y représente les états successifs de quelques clients, pour un nombre limité de
colonnes. Pour chaque état, on indique les valeurs des colonnes ainsi que la période
durant laquelle ces valeurs étaient courantes. On notera que les périodes [début, fin[
sont ouvertes à droite, la borne supérieure étant exclue 3 . L’état courant actuel d’un
client est caractérisé par fin = futur infini, ici conventionnellement représenté par
une date raisonnablement inaccessible 4 (1-01-3000). Les clients encore actifs sont
2. Le script de création et d’exploitation de cette base de données est disponible sur le site de
l’ouvrage.
3. Cette convention est choisie pour des raisons techniques : simplicité et efficacité de certaines
requêtes et indépendance de l’unité de temps.
