游戏,工作,投资,悟禅

工作就是修行

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  18 随笔 :: 0 文章 :: 17 评论 :: 39221 阅读
< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

有些时候,我们需要查询哪些视图引用了某张数据表,在greenplumdb里面,可以创建如下的函数来查询,代码如下:

复制代码
CREATE OR REPLACE FUNCTION public.get_views_used_by_table(text)
    RETURNS setof record  as 
$FBODY$
    select distinct vn.nspname || '.'||vc.relname as viewname  
    from pg_class c join pg_namespace n on n.oid=c.relnamespace
    left join pg_depend d on d.refobjid =c.oid 
    left join pg_rewrite r on r.oid =d.objid
    left join pg_class vc on r.ev_class =vc.oid
    left join pg_namespace vn on vc.relnamespace=vn.oid
    where  d.deptype='n' and
    d.classid =2618 and 
  r.rulename ='_RETURN' and
  vc.relkind='v' and 
  c.oid =$1::regclass ;
$FBODY$

LANGUAGE sql volatile;
复制代码

使用如下:

复制代码
testdb1=# select public.get_views_used_by_table('public.test9');
 get_views_used_by_table 
-------------------------
 (public.v_test9)
(1 row)

testdb1=# select * from public.get_views_used_by_table('public.test9') as A(viewname text);
    viewname    
----------------
 public.v_test9
(1 row)
复制代码

 

posted on   爱玩游戏的码农  阅读(1481)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示