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
;
相关推荐
曹牧1 小时前
Java:Assert.isTrue()
java·前端·数据库
程序员葫芦娃1 小时前
【Java毕设项目】基于SSM的旅游资源网站
java·开发语言·数据库·编程·课程设计·旅游·毕设
2401_865854882 小时前
怎样挑选适合业务的数据库云服务?
数据库
lkbhua莱克瓦242 小时前
基础-函数
开发语言·数据库·笔记·sql·mysql·函数
福大大架构师每日一题2 小时前
dify 1.11.2 正式发布:向量数据库、安全增强、测试优化与多语言支持全面升级
数据库·安全
码农学院3 小时前
Mysql 中的性能调优方法
数据库·mysql
UrSpecial3 小时前
MySQL索引
数据库·mysql
DB虚空行者3 小时前
聊下几次线上删除MySQL导致的故障
数据库
一 乐3 小时前
健身房预约|基于springboot + vue健身房预约小程序系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习·小程序
代码游侠4 小时前
学习笔记——IO多路复用技术
linux·运维·数据库·笔记·网络协议·学习