Database Reference
In-Depth Information
Tableau 4-6 : Interrogation d'une vue complexe
Besoin
Requête et résultat
Nom.des.départements.et.du.manager.où.la.moyenne.
des.salaires.dépasse.9 000.en.affichant.l'écart.entre.le.
plus.haut.et.le.plus.bas.salaire,.en.triant.sur.la.moyenne.
des.salaires.
SELECT departement, manager,
(max_sal - min_sal) ecart_max,
moyenne_sal
FROM soutou.v_dept_calculs
WHERE moyenne_sal > 9000
ORDER BY 4;;
DEPARTEMENT MANAGER ECART_MAX MOYENNE_SAL
------------------ -----------
----------- -------------
Sales Russell
7290 9492.6
Marketing Hartstein
7700 10450
Public Relations Baer 0 11000
Accounting Higgins
4078.8 11169.4
Executive King
7000 19333.3
Il est possible de mettre à jour toutes les vues, soit directement, soit indirectement par
l'intermédiaire de déclencheurs
INSTEAD OF
(
RULE
et
FUNCTION
pour PostgreSQL).
Vues modiiables
Lorsqu'il.est.possible.d'exécuter.des.instructions.
INSERT
,.
UPDATE
.ou.
DELETE
.directement.sur.
une.vue,.elle.est.dite.modifiable.(
updatable view
)..Pour.mettre.à.jour.une.vue.simple,.il.doit.
exister.une.correspondance.biunivoque.entre.les.lignes.de.la.vue.et.celles.de.l'objet.source..
Pour.pouvoir.mettre.à. jour.une.vue.complexe,. il.est.nécessaire.de.programmer.un.déclen-
cheur.de.type.
INSTEAD OF
.
Il va de soi qu'une vue créée avec la directive
WITH READ ONLY
ne peut être mise à jour quelle
que soit sa structure…
La première vue monotable (employés dont le salaire dépasse 10 000) citée en exemple est
modiiable sous réserve de renseigner les colonnes déclarées non nulles (la clé primaire en fait
partie). Ici, la condition de correspondance biunivoque est respectée.
En revanche, la deuxième vue multitable (employés, manager et détails sur les employés) ne
peut pas être mise à jour d'une manière directe, car d'une part, la clé primaire n'est pas pré-
sente, d'autre part, les résultats fournis proviennent de calculs d'agrégats et il serait insensé de
vouloir insérer un calcul directement.
Le tableau suivant présente quelques mises à jour possibles (sous réserve de respecter en amont
les contraintes de clés et de valeurs qui existent au niveau de la table source).