视图与表的依赖关系

举报
Sprother 发表于 2022/07/09 17:27:22 2022/07/09
【摘要】 出于数据安全或者使数据简单化的考虑,在数据仓库的建设过程中,通常采用视图的方式实现;时间久了之后,有时候视图与表的关系会变的很复杂,那么,我们如何找出他们的依赖关系呢?

背景

出于数据安全或者使数据简单化的考虑,在数据仓库的建设过程中,通常采用视图的方式实现;时间久了之后,有时候视图与表的关系会变的很复杂,那么,我们如何找出他们的依赖关系呢?


1、基础信息

1.1 表信息

1.2  直接依赖表的视图

1.3 依赖视图的视图


2、查询直接的依赖关系


3、已知视图,递归查询依赖的表

WITH RECURSIVE get_view_dependency
AS
(
SELECT a.objname, a.refobjname, a.relobjkind, a.refobjname path 
  FROM pg_catalog.gs_view_dependency a 
 where a.objname = 'view2_test_220704'   --(把这个条件改为两个条件schema+对象名)
UNION ALL
SELECT b.objname, b.refobjname, b.relobjkind, cte.path ||' , '|| b.refobjname path
  FROM pg_catalog.gs_view_dependency b
 INNER JOIN get_view_dependency cte 
         ON cte.refobjname=b.objname
)
SELECT * FROM get_view_dependency;



4、已知表,查询引用的视图

--通过表查询引用的视图

WITH RECURSIVE get_view_dependency
AS
(
SELECT a.refobjname, a.objname,  a.relobjkind, a.objname path 
  FROM pg_catalog.gs_view_dependency a 
 where a.refobjname = 'test_220704'   --(把这个条件改为两个条件schema+对象名)
UNION ALL
SELECT b.refobjname, b.objname,  b.relobjkind, cte.path ||' , '|| b.objname path
  FROM pg_catalog.gs_view_dependency b
 INNER JOIN get_view_dependency cte 
         ON cte.objname=b.refobjname
)
SELECT * FROM get_view_dependency

查询结果如下图:




【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。