ERROR 1369 (HY000): CHECK OPTION failed 'elevage.v_chien_race'
Exemple 2 : CASCADED
Code : SQL
CREATE OR REPLACE VIEW V_Chien_race
AS SELECT id, sexe, date_naissance, nom, commentaires, espece_id,
race_id, mere_id, pere_id, disponible
FROM V_Chien
WHERE race_id IS NOT NULL
WITH CASCADED CHECK OPTION;
UPDATE V_Chien_race
SET race_id = NULL
-- Ne respecte pas la condition de
V_Chien_race
WHERE nom = 'Zambo';
-- => impossible
UPDATE V_Chien_race
SET espece_id = 2, race_id = 4 -- Ne respecte pas la condition de
V_Chien
WHERE nom = 'Fila';
-- => impossible aussi puisque
CASCADED
Cette fois, les deux modifications échouent.
En résumé
Une vue est une requête SELECT que l'on stocke et à laquelle on donne un nom.
La requête SELECT stockée dans une vue peut utiliser des jointures, des clauses WHERE, GROUP BY, des fonctions
(scalaires ou d’agrégation), etc. L'utilisation de DISTINCT et LIMIT est cependant déconseillée.
On peut sélectionner les données à partir d'une vue de la même manière qu'on le fait à partir d'une table. On peut donc
utiliser des jointures, des fonctions, des GROUP BY, des LIMIT,…
Les vues permettent de simplifier les requêtes, de créer une interface entre l'application et la base de données, et/ou
restreindre finement l'accès en lecture des données aux utilisateurs.
Sous certaines conditions, il est possible d'insérer, modifier et supprimer des données à partir d'une vue.
Partie 6 : Au-delà des tables classiques : vues, tables temporaires et vues matérialisées
351/414
www.openclassrooms.com
Exemple 2 : CASCADED
Code : SQL
CREATE OR REPLACE VIEW V_Chien_race
AS SELECT id, sexe, date_naissance, nom, commentaires, espece_id,
race_id, mere_id, pere_id, disponible
FROM V_Chien
WHERE race_id IS NOT NULL
WITH CASCADED CHECK OPTION;
UPDATE V_Chien_race
SET race_id = NULL
-- Ne respecte pas la condition de
V_Chien_race
WHERE nom = 'Zambo';
-- => impossible
UPDATE V_Chien_race
SET espece_id = 2, race_id = 4 -- Ne respecte pas la condition de
V_Chien
WHERE nom = 'Fila';
-- => impossible aussi puisque
CASCADED
Cette fois, les deux modifications échouent.
En résumé
Une vue est une requête SELECT que l'on stocke et à laquelle on donne un nom.
La requête SELECT stockée dans une vue peut utiliser des jointures, des clauses WHERE, GROUP BY, des fonctions
(scalaires ou d’agrégation), etc. L'utilisation de DISTINCT et LIMIT est cependant déconseillée.
On peut sélectionner les données à partir d'une vue de la même manière qu'on le fait à partir d'une table. On peut donc
utiliser des jointures, des fonctions, des GROUP BY, des LIMIT,…
Les vues permettent de simplifier les requêtes, de créer une interface entre l'application et la base de données, et/ou
restreindre finement l'accès en lecture des données aux utilisateurs.
Sous certaines conditions, il est possible d'insérer, modifier et supprimer des données à partir d'une vue.
Partie 6 : Au-delà des tables classiques : vues, tables temporaires et vues matérialisées
351/414
www.openclassrooms.com
