系统目录“pg_depend”包含一些有用的依赖信息。您可以根据特定类型找到对象,如下所示:
select * from pg_depend where refclassid = 'pg_type'::regclass
and refobjid = 'information_schema.sql_identifier'::regtype;
这会查找依赖于“information_schema.sql_identifier”类型的对象。结果,classid 是目录的 OID——例如,对于取决于用户类型的列,classid 是 'pg_class'::regclass,objid 是 pg_class 行的 OID,objsubid 是来自 pg_attribute 的 attnum 值,因此对于这种情况,您可以像这样格式化结果:
select objid::regclass, attname from pg_depend
join pg_attribute on pg_attribute.attrelid = pg_depend.objid and pg_attribute.attnum = pg_depend.objsubid
where refclassid = 'pg_type'::regclass and refobjid = 'information_schema.sql_identifier'::regtype
and classid = 'pg_class'::regclass
limit 10
所以在 pg_depend 中,(classid,objid,objsubid)
描述一些依赖于(refclassid,refobjid)
.