Modification dans des tables = suppression dans 1 vue
Hello Cyrano,
j'ai un phénomène étrange
J'ai un formulaire qui me permet de modifier les données d'un produit déjà existant. La modification de ces données se fait sur 3 tables différentes (table produits, table prix, table images). Je donc fais une mise à jour avec une requete "UPDATE SET "
Les modifications se font correctement.
J'ai également une vue qui regroupe les informations des différentes tables. Et c'est là que se situe mon problème. Le produit modifié n'apparaît plus dans la vue.
Comment explique-tu cela?
La vue reprendre le contenu d'une ou plusieurs table(s) au moment où on l'interroge ?
Merci pour ton aide.
Réponses apportées à cette discussion
Logiquement, c'est parce que les condition de restriction de la requête qui construit la vue ne sont plus valides pour le produit en question.
Une vue n'est pas comme une table en ce sens qu'elle ne garde rien en stock, elle est exécutée à chaque consultation, ce qui fait que la moindre modification dans une des tables utilisée dans la requête modifie le contenu de la vue automatiquement.
Isole la requête SELECT de ta vue et tente de voir si une modification permettrait de récupérer le produit modifié : si tu trouves, mets à jour ta vue la la réexécutant avec un « CREATE OR REPLACE ...» au lieu du « CREATE ...» tout court de la première mise en place.
Hello Cyrano,
merci pour ces conseils je vais essayer en remplaçant « CREATE ...» par « CREATE OR REPLACE ...»
Je te tiens au courant
Hello Cyrano,
me revoilà j'ai donc essayé en remplaçant le simple "CREATE" par " CREATE OR REPLACE ...". Cela ne fonctionne pas non plus.
En fait dès que je fais une modification sur un produit, il disparait de ma vue alors que les modifications ont bien été faites dans les différentes tables.
Autre chose d'étrange c'est que si je supprime la vue et que je la créé à nouveau, les produits "modifiés" n'apparaissent toujours pas alors qu'ils sont toujours présent dans les tables. Etrange puisque la vue est sensée aller puiser les infos demandées dans les différentes tables ? Je me trompe ?
J'ai identifié le problème, il semble que se soit le fait que lorsque je modifie un produit un champs est vide (pas de données) . Ce champs sert en fait de lien avec une autre table dans ma vue.
Je teste encore pour être certain.
Ça peut venir d'un défaut dans la modélisation en ce sens que certaines colonnes devraient êter« NOT NULL » : si elles ne le sont pas, on peut enregistrer deslignes mais les liens ne seront pas garantis si les clés étrangères ne sont pas en « NOT NULL » et qu'aucune valeur n'est fournie.