【发布时间】:2020-04-09 10:40:00
【问题描述】:
假设我有一个 PostgreSQL 数据库,并且有一个看起来像这样的视图:
select foo.id as id, bar.id as bar_id, ...
from foo join bar on foo.bar_id = bar.id;
什么查询可以告诉我视图的哪些列来自哪些基础表/列组合?
我最接近的是查询information_schema.view_column_usage。除了定义视图中的哪一列之外,这给了我一切。所以我可以说,例如,foo.id 和bar.id 都在视图中使用。但我不知道id 列是来自foo 还是bar。
(是的,我可以手动解析 SQL。但我正在尝试自动分析具有许多视图、许多列以及视图中的列重命名不明显的系统。)
【问题讨论】:
-
不可能。
coalesce(a.id, b.id)呢?或select a.id union select b.id? -
@JGH 是的,有一些复杂的例子。我希望找出哪些列是依赖的,然后依靠选择通常很容易完成大部分工作这一事实。
标签: database postgresql information-schema