首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不知道是否物化的情况下PostgreSQL拖放视图

不知道是否物化的情况下PostgreSQL拖放视图
EN

Database Administration用户
提问于 2018-03-21 11:01:04
回答 1查看 263关注 0票数 1

我试图删除一个视图,我无法确定它是MATERIALIZED VIEW还是VIEW

代码语言:javascript
复制
DROP VIEW IF EXISTS myview;

如果myview是物化视图,则抛出错误,反之亦然。我正在寻找的是drop语句(或函数),它不关心是否必须删除MATERIALIZED VIEWVIEW

(提示:似乎既没有drop,也没有drop-view标记,因此没有drop-table)

EN

回答 1

Database Administration用户

发布于 2018-03-21 11:01:04

在这一点上我的解决方案是一个函数

代码语言:javascript
复制
CREATE OR REPLACE FUNCTION dropview(IN view_schema TEXT, IN view2drop TEXT)
RETURNS void
LANGUAGE plpgsql
AS 
$
DECLARE drop_stmnt VARCHAR;
BEGIN
SELECT 
    CASE
        WHEN relkind = 'm' THEN 'MATERIALIZED VIEW'
        WHEN relkind = 'v' THEN 'VIEW'
    END
FROM pg_class
WHERE relname = view2drop
INTO drop_stmnt;

EXECUTE 'DROP ' || drop_stmnt || ' IF EXISTS ' || view_schema ||'.'|| view2drop || ';';
END;
$;

所以用

代码语言:javascript
复制
SELECT dropview('myschema', 'myview');

不需要关心MATERIALIZED VIEWVIEW

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/201874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档