#amazon-web-services #amazon-redshift
#amazon-web-services #amazon-redshift
Вопрос:
Я создал простое представление в 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». Эти представления с поздней привязкой представляют собой поиск / ссылку на таблицы, а не предопределенную ссылку в базе данных. Вы также не можете предоставить доступ с помощью рычага столбца к представлению с поздней привязкой. В противном случае разрешения работают так же, как и обычные представления.
Чтобы изменить представление без необходимости изменять разрешения для него, вам нужно будет использовать «создать или заменить представление …» (см. Ссылку Выше) для обновления определения. Просто помните, что права доступа к новой таблице будут иметь значение.