如何在PostgreSQL中找到表格的视图?

xwbd5t1u  于 2023-02-04  发布在  PostgreSQL
关注(0)|答案(2)|浏览(165)

我需要查找基于表my_table的所有视图。我尝试查询

select *
from information_schema.views
where view_definition ilike '%my_table%'

并得到空表。这意味着我没有基于my_table的视图。但在尝试删除my_table后,我得到一个错误“无法删除表my_table,因为其他对象依赖于它”。

select *
from information_schema.views
where table_name = 'my_view'

并根据view_definition中为NULL的表查找具有view的行。
为什么定义可以是NULL?有没有其他方法可以找到依赖于表的视图?

vptzau2j

vptzau2j1#

阅读错误消息附带的“详细信息”消息。它将告诉您是哪些对象导致了问题。这些对象是防止删除表的依赖对象。
要删除所有这些依赖项,可以使用DROP TABLE ... CASCADE,就像错误消息的提示所说的那样。

hgtggwj0

hgtggwj02#

这就是我所需要的。正如我所说,我有一个表的列表,有30多个元素。它不是直接回答我的问题,但它解决了问题

do $$
declare names text[] := array['my_table', 'my_table1', 'my_table2'];

declare i int4;
begin
    for i in 1..3 loop
        begin
        
        execute 'drop table if exists my_schema.' || names[i];
        
        EXCEPTION WHEN OTHERS then
            -- nothing
        end;
    end loop;

end;
$$;

相关问题