更改 Redshift 视图以指向新表
Posted
技术标签:
【中文标题】更改 Redshift 视图以指向新表【英文标题】:Alter a Redshift View to point to a new table 【发布时间】:2020-10-14 05:55:24 【问题描述】:我在 Redshift 中创建了一个简单的视图,即 select * from source_a with no schema binding
。现在我有一个新表 source_b
,我希望视图指向它,而不是没有新的列或数据类型。
如何在不放弃权限的情况下重新指向视图?
【问题讨论】:
【参考方案1】:您再次运行CREATE
,但包含OR REPLACE
语法。
CREATE OR REPLACE VIEW my_view AS …
WITH NO SCHEMA BINDING ;
您可以使用pg_get_viewdef
检索现有视图定义。
SELECT pg_get_viewdef('my_view', true);
【讨论】:
【参考方案2】:首先看看创建视图文档页面 - https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_VIEW.html
您创建了一个后期绑定视图,该视图在执行时会检查表的权限,因此您需要确保您对该新表具有正确的权限 - “source_b”。这些后期绑定视图是对表的查找/引用,而不是数据库中的预定义链接。您也不能授予对后期绑定视图的列杆访问权限。否则权限的工作方式与常规视图相同。
要更改视图而不更改其权限,您将需要使用“创建或替换视图...”(参见上面的链接)来更新定义。请记住,新表的权限很重要。
【讨论】:
以上是关于更改 Redshift 视图以指向新表的主要内容,如果未能解决你的问题,请参考以下文章