Меня смущает следующее поведение представлений с поздней привязкой в Amazon Redshift.
У меня есть таблица test
, представление с поздней привязкой test_view
, которое читаетот test
.Я могу drop table test
, как и ожидалось, без необходимости каскадного спуска до test_view
.
Как только я создаю «нормальное» представление test_view_2
для чтения из позднего связывания test_view
, я не могуудалить таблицу test
.
Кажется, что «нормальное» представление заставляет представление с поздним связыванием вернуться к «нормальному» представлению, что я не ожидал.
Есть ли способ обойти это?Я хотел бы:
- Иметь возможность обновлять таблицы без каскадирования для всех зависимых представлений
- Иметь возможность поддерживать дальнейшие нисходящие представления четко определенными, чтобы всплывать схемуошибки во время выполнения.
Для репликации:
dataeng=# create table test (id integer);
CREATE TABLE
dataeng=# insert into test values (1), (2), (3);
INSERT 0 3
dataeng=# create view test_view as select id from public.test with no schema binding;
CREATE VIEW
dataeng=# select * from test_view;
id
----
3
1
2
(3 rows)
dataeng=# drop table test;
DROP TABLE
dataeng=# create table test (id integer);
CREATE TABLE
dataeng=# insert into test values (1), (2), (3);
INSERT 0 3
dataeng=# create view test_view_2 as select id from public.test_view;
CREATE VIEW
dataeng=# select * from test_view_2;
id
----
2
1
3
(3 rows)
dataeng=# drop table test;
ERROR: cannot drop table test because other objects depend on it
HINT: Use DROP ... CASCADE to drop the dependent objects too.
dataeng=#