Mam zmaterializowany widok, w Postgres 9.3
którym chciałbym zaktualizować o nowe kolumny. Jednak inne zmaterializowane widoki również zależą od tego widoku, a komunikat o błędzie wskazuje, że upuszczenie widoku nie jest możliwe, gdy inne obiekty zależą od niego.
BŁĄD: nie można upuścić widoku zmaterializowanego ostatnie_ładowania, ponieważ zależą od niego inne obiekty
Z dokumentacji wynika również, że słowo kluczowe REPLACE jest nieprawidłowe dla zmaterializowanego widoku. Czy istnieje jakiś skrót oprócz upuszczania wszystkich zależnych obiektów i przebudowywania każdego z nich?
Odpowiedzi:
Począwszy od PostgreSQL 9.4: W odróżnieniu od dokumentacji CREATE VIEW , dokumentacja CREATE MATERIALIZED VIEW NIE wspomina słowa kluczowego REPLACE. Wydaje się, że nie ma skrótu oprócz upuszczania wszystkich zależnych obiektów i przebudowywania każdego z nich.
Gdy to zrobisz, mogę polecić tylko dwie małe rzeczy:
źródło
W mojej sytuacji wolę ograniczyć upuszczanie za pomocą warstwy widoku:
na przykład.
źródło
W PgAdmin (wersja 4.x) mogłem łatwo zmodyfikować definicję (dodałem klauzulę where) w polu właściwości. Twój problem można rozwiązać w ten sposób.
źródło