Leçon 6 / 9 — Chapitre 5: CAST et vues approfondies
Les limites d'une vue avec agrégation
Une vue qui contient un GROUP BY (ou toute agrégation) n'est pas modifiable : impossible d'y faire un INSERT, UPDATE ou DELETE, car il n'existe aucune façon non ambiguë de faire correspondre une modification à une ligne précise d'une table d'origine.
CREATE VIEW total_achats_par_client AS
SELECT client_id, SUM(montant) AS total
FROM achats
GROUP BY client_id;
Cette vue regroupe achats par client : client 1 (Emma) → 25 + 10 = 35 ; client 2 (LUCAS) → 5 ; client 3 (Nina) → 60 ; client 4 (noé) → 40. Soit 4 groupes.
UPDATE total_achats_par_client SET total = 100 WHERE client_id = 1; échoue : total est le résultat d'un calcul (SUM), pas une colonne d'une table réelle — il n'y a rien à modifier « en place ».
À retenir :
- Une vue contenant
GROUP BY, une fonction d'agrégation,DISTINCTouUNIONn'est jamais modifiable. - Une vue simple (un seul
SELECTsans agrégation, sur une seule table) reste modifiable dans de nombreux moteurs — mais ce n'est pas garanti partout ni pour toute requête. - Modifier les données réelles derrière une vue non modifiable exige de cibler directement la table d'origine (ici,
achats).
À vous de jouer : quelle est la valeur de total pour le client_id 3 (Nina) dans cette vue ?
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 80 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès