Tutoriales

Cómo ver las vistas en PostgreSQL

Antes de usar los ejemplos

Los ejemplos de esta página son consultas de lectura. Reemplazá los nombres de esquema, rol y vista por los de tu entorno. Los valores de texto se escriben entre comillas simples rectas, no comillas tipográficas.

Revisión técnica del : se corrigieron ejemplos y se añadieron aclaraciones documentadas; no se ejecutaron comandos sobre bases de datos para esta revisión.

Puede ser que en algún momento te topaste con alguna de estas inquietudes:

  • Necesitas saber todas las vistas que tiene la base de datos, determinada tabla o esquema.
  • Querés saber qué tablas utiliza determinada vista; puede consultar más de una.

Para esto te será de gran ayuda saber que podés consultar información sobre vistas en dos vistas del sistema, “pg_catalog.pg_views” e “information_schema.views”.

A continuación, te mostrare las consultas que debes saber utilizando esas vistas del sistema.

Cantidad de vistas visibles en cada catálogo

SELECT count(*) FROM pg_catalog.pg_views;

La siguiente consulta puede devolver otra cantidad: information_schema.views muestra solo vistas accesibles al usuario actual.

SELECT count(*) FROM information_schema.views;

Todas las vistas ordenadas por nombre de manera ascendente

SELECT viewname FROM pg_catalog.pg_views ORDER BY viewname ASC;
Todas las vistas que pertenecen a determinado schema ordenadas por nombre de la vista de manera ascendente
SELECT viewname FROM pg_catalog.pg_views WHERE schemaname = 'tu_esquema' ORDER BY viewname ASC;
Todas las vistas que pertenecen a determinado usuario ordenadas por nombre de la vista de manera ascendente
SELECT viewname FROM pg_catalog.pg_views WHERE viewowner = 'tu_rol' ORDER BY viewname ASC;
Vistas y tablas referenciadas, ordenadas por esquema y nombre
SELECT vtu.view_schema, vtu.view_name AS viewname,
       vtu.table_schema, vtu.table_name AS tablename
FROM information_schema.view_table_usage AS vtu
JOIN information_schema.views AS v
  ON vtu.view_catalog = v.table_catalog
 AND vtu.view_schema = v.table_schema
 AND vtu.view_name = v.table_name
ORDER BY vtu.view_schema, vtu.view_name, vtu.table_schema, vtu.table_name;

Tablas utilizadas por una vista concreta

SELECT vtu.view_schema, vtu.view_name AS viewname,
       vtu.table_schema, vtu.table_name AS tablename
FROM information_schema.view_table_usage AS vtu
JOIN information_schema.views AS v
  ON vtu.view_catalog = v.table_catalog
 AND vtu.view_schema = v.table_schema
 AND vtu.view_name = v.table_name
WHERE vtu.view_schema = 'tu_esquema'
  AND vtu.view_name = 'tu_vista'
ORDER BY vtu.table_schema, vtu.table_name;

Cómo interpretar los resultados

Incluimos los esquemas para distinguir objetos con el mismo nombre. view_table_usage solo incluye tablas cuyo propietario sea un rol habilitado en la sesión y no incluye tablas del sistema. Un resultado vacío no demuestra que una vista carezca de dependencias.

Referencias: pg_views, information_schema.views y view_table_usage.

Ver todos los tutoriales de bases de datos.

Responsable editorial: Todo sobre informática.

Comentarios (0)

Todavía no hay comentarios publicados. Podés ser la primera persona en participar.

Agregar un comentario público

Tu correo es opcional y no será publicado. Los comentarios se revisan antes de aparecer.

Solo lo usaremos para avisarte si respondemos.