SQL:以编程方式确定表是否为视图

时间:2017-08-03 18:30:27

标签: sql postgresql

如果我需要确定给定的表是否是一个视图,我可以使用查询而不是使用' \ d' ?我有一个脚本需要审核几个表以便删除,但不想手动检查它们。

2 个答案:

答案 0 :(得分:2)

您可以使用pg_class

  

relkind char

     

r =普通表,i =索引,S =序列,v =视图,m =物化视图,c =复合类型,t = TOAST表,f =外表

IF EXISTS (SELECT relname 
           FROM pg_class
           WHERE relname='<object_name>' 
            AND relkind = 'v') 
THEN
...

答案 1 :(得分:2)

您可以从information_schema.tables视图中找到该信息:

select table_type 
from information_schema.tables 
where table_schema = 'my_schema' and table_name = 'my_table'`

table_type列说明:

  

表的类型:持久基表的BASE TABLE(普通表类型),视图的VIEW,外表的FOREIGN TABLE或临时表的LOCAL TEMPORARY