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