Como buscar si una vista es usada por otra vista en PostgreSQL
Publicado por Ivan Camilo (1 intervención) el 06/09/2018 19:08:11
Hola Comunidad.
Aca les traigo una forma para poder revisar en la base de datos si una vista en particular esta siendo usada por otra vista.
esto debido a que a veces deseamos borrar una vista pero no se permite debido a que esta siendo usada en otro lado pero no sabemos donde.
tambien funciona (creo yo no probe) para buscar donde se usa una tabla.
aqui el script:
Aca les traigo una forma para poder revisar en la base de datos si una vista en particular esta siendo usada por otra vista.
esto debido a que a veces deseamos borrar una vista pero no se permite debido a que esta siendo usada en otro lado pero no sabemos donde.
tambien funciona (creo yo no probe) para buscar donde se usa una tabla.
aqui el script:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT source_table.relname as tabla_origen
, dependent_view.relname as se_usa_en
FROM pg_depend
JOIN pg_rewrite ON pg_depend.objid = pg_rewrite.oid
JOIN pg_class as dependent_view ON pg_rewrite.ev_class = dependent_view.oid
JOIN pg_class as source_table ON pg_depend.refobjid = source_table.oid
JOIN pg_attribute ON pg_depend.refobjid = pg_attribute.attrelid
AND pg_depend.refobjsubid = pg_attribute.attnum
JOIN pg_namespace dependent_ns ON dependent_ns.oid = dependent_view.relnamespace
JOIN pg_namespace source_ns ON source_ns.oid = source_table.relnamespace
WHERE
source_ns.nspname = 'nombre_schema'
AND source_table.relname = 'nombre_vista'
AND pg_attribute.attnum > 0
ORDER BY 1,2;
Valora esta pregunta


0