您实际上可以通过查询数据库的内部“依赖”信息来收集一些此类信息。如果某个东西依赖于另一个东西,那就表明它使用了它。下面是一个示例查询,可帮助您了解如何遍历所涉及的两个结构:
SELECT
c1.oid as relid,
n1.nspname || '.' || c1.relname as relation,
c1.relkind,
c2.oid as relid,
n2.nspname || '.' || c2.relname as dependency,
c2.relkind
FROM
pg_depend d,
pg_class c1,
pg_namespace n1,
pg_class c2,
pg_namespace n2
WHERE
d.objid = c1.oid AND
c1.relnamespace = n1.oid AND
n1.nspname NOT IN('information_schema', 'pg_catalog') AND
n1.nspname !~ '^pg_toast' AND
d.refobjid = c2.oid AND
c2.relnamespace = n2.oid AND
n2.nspname NOT IN('information_schema', 'pg_catalog') AND
n2.nspname !~ '^pg_toast' AND
c1.oid != c2.oid
GROUP BY n1.nspname,c1.relname,c1.oid,c1.relkind,
n2.nspname,c2.relname,c2.oid,c2.relkind
ORDER BY n1.nspname,c1.relname;
有关所有这些内部位的信息可以在系统目录 http://www.postgresql.org/docs/current/interactive/catalogs.html文档。