221 votes

Comment voir le code CREATE VIEW pour une vue dans PostgreSQL ?

Existe-t-il un moyen facile de voir le code utilisé pour créer une vue en utilisant le client de ligne de commande PostgreSQL ?

Quelque chose comme le SHOW CREATE VIEW de MySQL.

8voto

Gianluca Rossini Points 101

Il y a une petite chose à signaler.
Utilisation de la fonction pg_get_viewdef o pg_views ou information_schema.views vous obtiendrez toujours une version réécrite de votre DDL originale.
La version réécrite peut ou non être la même que votre DDL script 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 des sous-sélections ou des jointures, vos vues seront probablement réécrites.

7voto

Delta Points 71

Sur psql cli , vous pouvez utiliser

\d+ <yourViewName>
\sv <yourViewName>

La sortie est la suivante :

\d+ v_ma_students

                               View "public.v_ma_students"
 Column |         Type          | Collation | Nullable | Default | Storage  | De
scription
--------+-----------------------+-----------+----------+---------+----------+---
SOMETHINGS HERE

View definition:
 SELECT student.sno,
    student.sname,
    student.ssex,
    student.sage,
    student.sdept
   FROM student
  WHERE student.sdept::text = 'MA'::text;
Options: check_option=cascaded

\sv v_ma_students

CREATE OR REPLACE VIEW public.v_ma_students AS
 SELECT student.sno,
    student.sname,
    student.ssex,
    student.sage,
    student.sdept
   FROM student
  WHERE student.sdept::text = 'MA'::text
 WITH CASCADED CHECK OPTION

4voto

buratino Points 1

Dans le client de la ligne de commande psql vous pouvez utiliser la commande suivante :

\sv <VIEWNAME>

-1voto

Le moyen le plus simple de trouver la requête 'CREATE TABLE ...' est d'utiliser cette requête -

SHOW TABLE your_schema_name.your_table_name

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X