首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >截断后的pg_catalog.pg_class.relfilenode

截断后的pg_catalog.pg_class.relfilenode
EN

Stack Overflow用户
提问于 2016-10-25 00:23:01
回答 1查看 187关注 0票数 2

我有一个依赖于表的视图: create view hello_v as select * from hello;要从视图名称中检索被引用的表名,我认为pg_class和pg_depend表可能会很有用。对表进行截断会导致pg_depend中没有条目。

如何返回等于pg_catalog.relfilenode的pg_depend.refobjid?

我可以重复我的观点:

代码语言:javascript
复制
select version();

create table hello(name text);
create view hello_v as select * from hello;

select c.relname, c.relfilenode from pg_catalog.pg_class c inner join pg_catalog.pg_depend d on d.refobjid = c.relfilenode
    where c.relname in ('hello', 'hello_v') group by relname, relfilenode order by c.relname;

 relname | relfilenode
---------+-------------
 hello   |      305818
 hello_v |      305824

truncate hello;

select c.relname, c.relfilenode from pg_catalog.pg_class c inner join pg_catalog.pg_depend d on d.refobjid = c.relfilenode
    where c.relname in ('hello', 'hello_v') group by relname, relfilenode order by c.relname;

 relname | relfilenode
---------+-------------
 hello_v |      305824

 -- I hope to exist a record where relname = hello and relfilenode = xxx

或者简单地说:

代码语言:javascript
复制
create table hello(name text);

select c.relname, c.relfilenode from pg_catalog.pg_class c inner join pg_catalog.pg_depend d on d.refobjid = c.relfilenode
    where c.relname = 'hello' group by relname, relfilenode order by c.relname;

truncate hello;

select c.relname, c.relfilenode from pg_catalog.pg_class c inner join pg_catalog.pg_depend d on d.refobjid = c.relfilenode
    where c.relname = 'hello' group by relname, relfilenode order by c.relname;

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-08-15 19:05:01

您的联接条件错误。你想加入的是c.oid,而不是relfilenode。

这将正确显示您的表:

代码语言:javascript
复制
select c.relname, c.relfilenode from pg_catalog.pg_class c inner join pg_catalog.pg_depend d on d.refobjid = c.oid
where c.relname = 'hello' group by relname, relfilenode order by c.relname;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40223121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档