Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 不考虑类型的下拉视图(Postgres)_Sql_Postgresql_View_Psql_Materialized Views - Fatal编程技术网

Sql 不考虑类型的下拉视图(Postgres)

Sql 不考虑类型的下拉视图(Postgres),sql,postgresql,view,psql,materialized-views,Sql,Postgresql,View,Psql,Materialized Views,我正在尝试将物化视图转换为视图。由于我们的模式是如何部署的,我必须想出一个SQL脚本来删除表名中的任何内容,并重新创建视图。但是,在重新运行此代码时,我收到一个错误,即该视图不是物化视图,我需要改用DROP view。有没有办法绕过这个问题?是否删除视图也将删除物化视图?您可以使用以下功能: create or replace function drop_any_view(regclass) returns void language plpgsql as $$ begin execut

我正在尝试将物化视图转换为视图。由于我们的模式是如何部署的,我必须想出一个SQL脚本来删除表名中的任何内容,并重新创建视图。但是,在重新运行此代码时,我收到一个错误,即该视图不是物化视图,我需要改用DROP view。有没有办法绕过这个问题?是否删除视图也将删除物化视图?

您可以使用以下功能:

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');