Existe-t-il un moyen simple de voir le code utilisé pour créer une vue à l'aide du client en ligne de commande PostgreSQL?
Quelque chose comme le SHOW CREATE VIEW
de MySQL.
J'ai dû retourner ici pour regarder pg_get_viewdef
(comment s'en souvenir !!), alors j'ai cherché une commande plus mémorable ... et je l'ai eu:
\d+ viewname
Vous pouvez voir des types de commandes similaires en tapant \?
sur la ligne de commande pgsql.
Conseil bonus: la commande emacs sql-postgres
rend pgsql beaucoup plus agréable (édition, copie, collage, historique des commandes).
select pg_get_viewdef('viewname', true)
Une liste de toutes ces fonctions est disponible dans le manuel:
http://www.postgresql.org/docs/current/static/functions-info.html
select definition from pg_views where viewname = 'my_view'
Si vous voulez une version ANSI SQL-92:
select view_definition from information_schema.views where table_name = 'view_name';
GoodNews à partir de la v.9.6 et des versions supérieures, l'édition des vues est désormais native de psql. Il suffit d'appeler la commande \ev
. Les définitions de vue s'afficheront dans votre éditeur configuré.
julian@assange=# \ev {your_view_names}
Prime. Une commande utile pour interagir avec le tampon de requête.
Query Buffer
\e [FILE] [LINE] edit the query buffer (or file) with external editor
\ef [FUNCNAME [LINE]] edit function definition with external editor
\ev [VIEWNAME [LINE]] edit view definition with external editor
\p show the contents of the query buffer
\r reset (clear) the query buffer
\s [FILE] display history or save it to file
\w FILE write query buffer to file
C’est une petite chose à souligner.
Utilisation de la fonction pg_get_viewdef ou pg_views ou information_schema.views vous obtiendrez toujours une version réécrite de votre DDL original.
La version remaniée peut être ou non identique à votre script DDL d'origine.
Si le gestionnaire de règles réécrit votre définition de vue, votre DLL originale _ sera perdue et vous ne pourrez lire que la version réécrite de votre définition de vue.
Toutes les vues ne sont pas réécrites, mais si vous utilisez la sous-sélection ou les jointures, vos vues le seront probablement.