在Postgres中替换DBA_Source以查找数据库对象

时间:2018-08-01 06:49:26

标签: postgresql

如何知道所有UDF都在使用表(table_1)?

以下查询为我提供了表格的详细信息:

SELECT * FROM information_schema.tables;

以下查询提供了UDF详细信息:

select * FROM pg_proc;

但是我怎么知道table1用于所有UDF?

1 个答案:

答案 0 :(得分:1)

如果要查找函数和表之间的依赖关系,则在prosrc的{​​{1}}列中进行字符串搜索是唯一的方法。

当然,这不是很令人满意,因为很难说pg_proc的出现是否是对表或变量名的引用。另外,您在目录中找不到C函数的来源。

要获得可靠的答案,您需要深入了解编写函数的语言,这是问题的核心:PostgreSQL对语言没有任何了解! PostgreSQL寓言的可扩展性允许您为函数定义新的语言,只有语言处理程序知道如何解释作为函数体的字符串。这也适用于PostgreSQL附带的PL / pgSQL。

这也是为什么函数中使用的对象没有table_1条目的原因。