gpt4 book ai didi

postgresql - 我可以从另一个 View 创建一个 View 然后临时删除吗

转载 作者:行者123 更新时间:2023-11-29 14:14:30 24 4
gpt4 key购买 nike

我想创建一个临时 View ,例如:

CREATE VIEW temp_view AS SELECT ..... 

然后通过调用一些函数来定义一个我想创建我的普通 View 的名称:

--- my main_viewYYYYMMDD will have the contents of temp_view
DO
$$
BEGIN
EXECUTE format( 'CREATE OR REPLACE VIEW schema.%I '
' AS SELECT * FROM schema.temp_view', getViewName() ) ;
END ;
$$ LANGUAGE plpgsql ;

然后 DROP VIEW temp_view ; 失败,因为存在依赖 View 。

CREATE TEMP VIEW temp_view ... 会解决这个问题吗?

最佳答案

使用 pg_get_viewdef 从它的定义创建 VIEW

create or replace view temp_view as select * from employees;
DO
$$
BEGIN
EXECUTE format( 'CREATE OR REPLACE VIEW public.%I '
' AS %s ' , 'yourviewname' ,pg_get_viewdef('temp_view', true)) ;
DROP VIEW temp_view;
END ;
$$ LANGUAGE plpgsql ;

您还可以将 temp_view 创建为临时 View 。临时 View 会在当前 session 结束时自动删除。但是,它的定义在 session 结束之前都是可见的。对于该场景,您无需在 do block 中包含 drop view,以防您在 session 结束之前不对其执行任何其他操作。

关于postgresql - 我可以从另一个 View 创建一个 View 然后临时删除吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54110142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com