une sous-requête dans la clause SELECT.
Exemple : la vue V_Nombre_espece, qui utilise une fonction d'agrégation, ne permet pas de modifier les données.
Code : SQL
UPDATE V_Nombre_espece
SET nb = 6
WHERE id = 4;
Code : Console
1288 (HY000): The target table V_Nombre_espece of the UPDATE is not updatable
Autres conditions
On ne peut pas modifier les données à partir d'une vue qui est elle-même définie à partir d'une vue qui ne permet pas la
modification des données.
Ce n'est pas non plus possible à partir d'une vue dont la clause WHERE contient une sous-requête faisant référence à une
des tables de la clause FROM.
Conditions pour qu'une vue permette d'insérer des données (requêtes INSERT)
On peut insérer des données dans une vue si celle-ci respecte les mêmes conditions que pour la modification de données, ainsi
que les conditions supplémentaires suivantes.
Valeurs par défaut
Toutes les colonnes n'ayant pas de valeur par défaut (et ne pouvant pas être NULL) de la table dans laquelle on veut faire
l'insertion doivent être référencées par la vue.
Exemple
Code : SQL
INSERT INTO V_Animal_stagiaire (nom, sexe, date_naissance,
espece_id, race_id)
VALUES ('Rocco', 'M', '2012-03-12', 1, 9);
Ceci fonctionne. La colonne commentaires n'est pas référencée par V_Animal_stagiaire mais peut être NULL (qui est donc sa
valeur par défaut).
Code : SQL
CREATE VIEW V_Animal_mini
AS SELECT id, nom, sexe, espece_id
FROM Animal;
INSERT INTO V_Animal_mini(nom, sexe, espece_id)
VALUES ('Toxi', 'F', 1);
Partie 6 : Au-delà des tables classiques : vues, tables temporaires et vues matérialisées
346/414
www.openclassrooms.com
Exemple : la vue V_Nombre_espece, qui utilise une fonction d'agrégation, ne permet pas de modifier les données.
Code : SQL
UPDATE V_Nombre_espece
SET nb = 6
WHERE id = 4;
Code : Console
1288 (HY000): The target table V_Nombre_espece of the UPDATE is not updatable
Autres conditions
On ne peut pas modifier les données à partir d'une vue qui est elle-même définie à partir d'une vue qui ne permet pas la
modification des données.
Ce n'est pas non plus possible à partir d'une vue dont la clause WHERE contient une sous-requête faisant référence à une
des tables de la clause FROM.
Conditions pour qu'une vue permette d'insérer des données (requêtes INSERT)
On peut insérer des données dans une vue si celle-ci respecte les mêmes conditions que pour la modification de données, ainsi
que les conditions supplémentaires suivantes.
Valeurs par défaut
Toutes les colonnes n'ayant pas de valeur par défaut (et ne pouvant pas être NULL) de la table dans laquelle on veut faire
l'insertion doivent être référencées par la vue.
Exemple
Code : SQL
INSERT INTO V_Animal_stagiaire (nom, sexe, date_naissance,
espece_id, race_id)
VALUES ('Rocco', 'M', '2012-03-12', 1, 9);
Ceci fonctionne. La colonne commentaires n'est pas référencée par V_Animal_stagiaire mais peut être NULL (qui est donc sa
valeur par défaut).
Code : SQL
CREATE VIEW V_Animal_mini
AS SELECT id, nom, sexe, espece_id
FROM Animal;
INSERT INTO V_Animal_mini(nom, sexe, espece_id)
VALUES ('Toxi', 'F', 1);
Partie 6 : Au-delà des tables classiques : vues, tables temporaires et vues matérialisées
346/414
www.openclassrooms.com
