2
私はビューをテーブルに依存しています:create hello_v as select from hello; 参照名から参照されたテーブル名を検索するには、pg_classとpg_dependテーブルが便利かもしれないと思います。 テーブルを切り捨てると、pg_dependにエントリがありません。pg_catalog.pg_class.relfilenode after truncate
pg_depend.refobjidに戻る方法は、pg_catalog.relfilenodeと同じですか?
私は私の視点を再現することができます
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
それとも単に:
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;
感謝。