我正在尝试将实例化视图转换为视图。由于我们的架构的部署方式,我必须提出一个SQL脚本,该脚本删除表名称中的所有内容,然后重新创建视图。但是,重新运行此代码时,我收到一个错误,该视图不是实例化视图,因此我需要使用DROP VIEW
。有办法解决这个问题吗? DROP VIEW
也会删除实例化视图吗?
答案 0 :(得分:1)
您可以使用以下功能:
create or replace function drop_any_view(regclass)
returns void language plpgsql as $$
begin
execute format(
'drop %s view %s',
case (select relkind from pg_class where oid = $1)
when 'm' then 'materialized'
else '' end,
$1
);
end $$;
该函数将删除视图,无论它是否实现。
select drop_any_view('my_view');