Par contre, l'insertion dans V_Animal_mini échoue puisque date_naissance n'est pas référencée, ne peut pas être NULL, et n'a
pas de valeur par défaut.
Code : Console
ERROR 1423 (HY000): Field of view 'elevage.v_animal_mini' underlying table doesn't have a
Jointures
Les vues avec jointure peuvent supporter l'insertion si :
il n'y a que des jointures internes ;
l'insertion se fait sur une seule table (comme pour la modification).
Exemple
Code : SQL
INSERT INTO V_Animal_details (espece_nom, espece_nom_latin)
VALUES ('Perruche terrestre', 'Pezoporus wallicus');
Il y a une jointure externe dans V_Animal_details, donc l'insertion ne fonctionnera pas.
Code : Console
ERROR 1471 (HY000): The target table V_Animal_details of the INSERT is not insertableinto
Par contre, si l'on crée une table V_Animal_espece, avec uniquement une jointure interne, il n'y a aucun problème.
Code : SQL
CREATE OR REPLACE VIEW V_Animal_espece
AS SELECT Animal.id, Animal.sexe, Animal.date_naissance, Animal.nom,
Animal.commentaires,
Animal.espece_id, Animal.race_id, Animal.mere_id,
Animal.pere_id, Animal.disponible,
Espece.nom_courant AS espece_nom, Espece.nom_latin AS
espece_nom_latin
FROM Animal
INNER JOIN Espece ON Espece.id = Animal.espece_id;
INSERT INTO V_Animal_espece (espece_nom, espece_nom_latin)
VALUES ('Perruche terrestre', 'Pezoporus wallicus');
Expressions
Les colonnes de la vue doivent être de simples références à des colonnes, et non pas des expressions.
Exemple
Partie 6 : Au-delà des tables classiques : vues, tables temporaires et vues matérialisées
347/414
www.openclassrooms.com
pas de valeur par défaut.
Code : Console
ERROR 1423 (HY000): Field of view 'elevage.v_animal_mini' underlying table doesn't have a
Jointures
Les vues avec jointure peuvent supporter l'insertion si :
il n'y a que des jointures internes ;
l'insertion se fait sur une seule table (comme pour la modification).
Exemple
Code : SQL
INSERT INTO V_Animal_details (espece_nom, espece_nom_latin)
VALUES ('Perruche terrestre', 'Pezoporus wallicus');
Il y a une jointure externe dans V_Animal_details, donc l'insertion ne fonctionnera pas.
Code : Console
ERROR 1471 (HY000): The target table V_Animal_details of the INSERT is not insertableinto
Par contre, si l'on crée une table V_Animal_espece, avec uniquement une jointure interne, il n'y a aucun problème.
Code : SQL
CREATE OR REPLACE VIEW V_Animal_espece
AS SELECT Animal.id, Animal.sexe, Animal.date_naissance, Animal.nom,
Animal.commentaires,
Animal.espece_id, Animal.race_id, Animal.mere_id,
Animal.pere_id, Animal.disponible,
Espece.nom_courant AS espece_nom, Espece.nom_latin AS
espece_nom_latin
FROM Animal
INNER JOIN Espece ON Espece.id = Animal.espece_id;
INSERT INTO V_Animal_espece (espece_nom, espece_nom_latin)
VALUES ('Perruche terrestre', 'Pezoporus wallicus');
Expressions
Les colonnes de la vue doivent être de simples références à des colonnes, et non pas des expressions.
Exemple
Partie 6 : Au-delà des tables classiques : vues, tables temporaires et vues matérialisées
347/414
www.openclassrooms.com
