首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgresql -如何执行视图定义?

Postgresql -如何执行视图定义?
EN

Stack Overflow用户
提问于 2019-11-20 14:32:10
回答 1查看 674关注 0票数 0

我想“测试”postgres视图sql的执行。有点像

代码语言:javascript
复制
select exec(select pg_get_viewdef('schema.materialized_view_name', true))

(这不起作用)

我在处理物化视图。物化视图正在从外部数据包装表中选择数据,我希望在刷新视图之前“测试”sql代码。底层数据源模式可能已经更改,我希望确保在物化视图中不会有任何数据。我宁愿拥有过时的缓存数据,也不愿没有数据。

因此,总结如下:

  1. 测试以确保来自物化视图的
  2. 运行物化视图返回有效的结果(计数>0)以更新数据。

这个是可能的吗?

EN

回答 1

Stack Overflow用户

发布于 2019-11-20 14:45:54

您可以使用动态SQL:

代码语言:javascript
复制
CREATE FUNCTION test_viewdef(view_to_test regclass) RETURNS boolean
   LANGUAGE sql SET transaction_read_only = on AS
$$DECLARE
   dummy integer;
BEGIN
   EXECUTE format(
              'SELECT 42 FROM (%s) LIMIT 0',
              pg_get_viewdef(view_to_test)
           ) INTO dummy;
   RETURN TRUE;
EXCEPTION
   WHEN OTHERS THEN
      RETURN FALSE;
END;$$;

请注意,LIMIT 0无法防止长时间的执行。

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

https://stackoverflow.com/questions/58956747

复制
相关文章

相似问题

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