Bonjour,
C'est mon premier message ici et il est peut-être un peu hors sujet (si vous trouvez que c'est le cas, je m'en excuse par avance), mais j'aimerais quand même avoir l'avis d'experts PostgreSQL sur la question.
Voilà : d'un côté j'ai une base PostgreSQL avec une table et une vue (assez complexe) basée sur cette table, et d'un autre côté j'ai une appli écrite en QtJambi (Qt en Java) qui va utiliser cette base.
Le framework Model/View de Qt permet de définir une QTableModel qui constitue un modèle (au sens MVC) correspondant à une table. A l'utilisation, on modifie les données dans cette QTableModel puis on fait un database().commit() pour répercuter les modifs dans la base. Très pratique.
Bien sûr du point de vue de Qt, les vues PostgreSQL ne présentent aucune différence avec les tables. On peut donc utiliser une vue comme source de données d'une QTableModel. Pas de problème... en tout cas tant qu'on essaie pas de modifier les données. Je n'ai pas osé essayer un commit() sur une vue, mais comme les vues PostgreSQL sont read-only, je suis à peu près sûr du résultat.
Pour pouvoir éditer les données la démarche logique est donc d'utiliser la table comme source de données et non plus la vue. Mais alors pour présenter les données comme dans la vue il faut réécrire dans le code, l'équivalent de toutes les fonctions utilisées dans la vue, et comme j'ai passé pas mal de temps à développer toutes ces fonctions pour construire cette vue, j'aimerais bien éviter d'avoir à me retaper tout le boulot dans le code. D'autant que les premiers tests font apparaitre une chute de perf assez considérable.
Est-ce que vous auriez des idées sur la meilleure façon d'appréhender la question ?
Merci pour toute information à ce sujet.
jMax
Partager