Измените представление с красным смещением, чтобы указать на новую таблицу

#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 ASWITH 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». Эти представления с поздней привязкой представляют собой поиск / ссылку на таблицы, а не предопределенную ссылку в базе данных. Вы также не можете предоставить доступ с помощью рычага столбца к представлению с поздней привязкой. В противном случае разрешения работают так же, как и обычные представления.

Чтобы изменить представление без необходимости изменять разрешения для него, вам нужно будет использовать «создать или заменить представление …» (см. Ссылку Выше) для обновления определения. Просто помните, что права доступа к новой таблице будут иметь значение.