Option de la vue pour la modification des données
Lors de la création d'une vue, on peut ajouter une option : WITH [LOCAL | CASCADED] CHECK OPTION.
Code : SQL
CREATE [OR REPLACE]
[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW nom_vue [(liste_colonnes)]
AS requete_select
[WITH [CASCADED | LOCAL] CHECK OPTION]
Lorsque cette option est spécifiée, les modifications et insertions ne sont acceptées que si les données répondent aux
conditions de la vue (c'est-à-dire aux conditions données par la clause WHERE de la requête définissant la vue).
Exemples
Si la vue V_Animal_stagiaire (qui, pour rappel, sélectionne les chats uniquement) est définie avec WITH CHECK OPTION, on
ne peut pas modifier l'espece_id à partir de cette vue.
Code : SQL
CREATE OR REPLACE VIEW V_Animal_stagiaire
AS SELECT id, nom, sexe, date_naissance, espece_id, race_id,
mere_id, pere_id, disponible
FROM Animal
WHERE espece_id = 2
WITH CHECK OPTION;
En effet, cette vue est définie avec la condition WHERE espece_id = 2. Les modifications faites sur les données de cette
vue doivent respecter cette condition.
Code : SQL
UPDATE V_Animal_stagiaire
SET espece_id = 1
WHERE nom = 'Cracotte';
Code : Console
ERROR 1369 (HY000): CHECK OPTION failed 'elevage.v_animal_stagiaire'
De même, l'insertion d'un animal dont l'espece_id n'est pas 2 sera refusée aussi.
Code : SQL
INSERT INTO V_Animal_stagiaire (sexe, date_naissance, espece_id,
nom)
VALUES ('F', '2011-09-21 15:14:00', 2, 'Bambi');
-- c'est un
chat, pas de problème
INSERT INTO V_Animal_stagiaire (sexe, date_naissance, espece_id,
nom)
Partie 6 : Au-delà des tables classiques : vues, tables temporaires et vues matérialisées
349/414
www.openclassrooms.com
Précédent

- 349/413

Suivant