PostgreSQL-视图-03-查询对象依赖关系视图-dba_dependencies

PostgreSQL查询对象依赖关系视图

sql 复制代码
-- PostgreSQL查询对象依赖关系视图

drop view if exists tzq.dba_dependencies;
create view tzq.dba_dependencies as 
with source_obj as (
  select sp.oid,sp.proname
        ,unnest(
           string_to_array(
             regexp_replace(
                regexp_replace(lower(sp.prosrc),'--.*?\n'::text, ''::text, 'g'::text)
                ,'\W+'::text, ' '::text, 'g'::text)
             , ' '::text)
         )
         as split_text
        ,sp.proowner::regrole::character varying as schema_name
        ,sp.proowner
    from pg_proc sp
   where (sp.proowner in (select pg_user.usesysid 
                            from pg_user
                           where pg_user.usename ~~ 'tzq%'::text or 
                                 pg_user.usename = 'jdbc_etl_in'::name or 
                                 pg_user.usename = 'ewf'::name
                          ))
)
,all_depend as (
  select t.schema_name as owner
        ,t.proname as name
        ,'procedure'::text as type
        ,p.proowner::regrole::character varying as referenced_owner
        ,p.proname as referenced_name
        ,'procedure'::text as referenced_type
        ,p.proowner
    from source_obj t
    join pg_proc p
      on t.split_text = p.proname
     and p.proowner <> 10::oid
  union all
  select t.schema_name as owner
        ,t.proname as name
        ,'procedure'::text as type
        ,p.schemaname as referenced_owner
        ,p.tablename as referenced_name
        ,'table'::text as referenced_type
        ,t.proowner
    from source_obj t
    join pg_tables p
      on t.split_text = p.tablename
     and (p.schemaname ~~ 'tzq%'::text or 
          p.schemaname = 'jdbc_etl_in'::name or 
          p.schemaname = 'ewf'::name)
)
select distinct
       owner
      ,name
      ,type
      ,referenced_owner
      ,referenced_name
      ,referenced_type
  from all_depend
;
相关推荐
xieliyu.3 小时前
MySQL 进阶笔记:用户 / 会话 / 全局 / 局部变量 + CASE 分支语法
开发语言·数据库·笔记·mysql
xcLeigh3 小时前
把CPU、内存、网络流量同时丢给TimechoAI,做交叉分析
数据库·内存·时序数据库·cpu·网络流量·timechoai·交叉分析
不好听6133 小时前
外键的 ON DELETE 与 ON UPDATE:父子表如何联动
数据库
ZGG0033 小时前
底座 01:Agent 的 token 成本怎么砍——Redis 缓存实战
数据库·redis·缓存
小小龙学IT3 小时前
Qt Graphics View Framework(图形视图框架)深度解析:从 Scene/View/Item 到工业级 2D 场景
开发语言·数据库·qt
aikopen3 小时前
高可用 API 网关限流与微服务过载保护实战:从 Sentinel 动态阈值到 DB 连接池舱壁
数据库·微服务·sentinel
whcyhhh3 小时前
头歌实践教学平台:数据科学与大数据技术导论(七下)
大数据·数据库·python
迪康coolmu3 小时前
企业IT运维闭环——工单管理与远程协助一体化实践
java·大数据·运维·网络·数据库·人工智能·安全
cmes_love4 小时前
期权分钟行情数据下载:商品/股指/ETF期权全覆盖
数据库·区块链
骇客野人4 小时前
MySQL / PostgreSQL 单表及表数据备份恢复实施方案
数据库·mysql·postgresql