Stworzyłem zmaterializowany widok w PostgreSQL 9.3, ale od tego czasu utraciłem podstawowe zapytanie SELECT, które je utworzyło. Chciałbym DROP zmaterializować widok, przepisać zapytanie, aby dodać więcej danych, a następnie utworzyć zmaterializowany widok o tej samej nazwie, ale z nowym zapytaniem bazowym.W jaki sposób mogę wykryć podstawowe zapytanie utworzonego zmaterializowanego widoku?
5
A
Odpowiedz
11
Wystarczy:
SELECT pg_get_viewdef('myview');
od klienta do wyboru.
np. w psql
:
test=> CREATE MATERIALIZED VIEW fred AS SELECT x FROM generate_series(1,100) x;
SELECT 100
test=> \a\t
Output format is unaligned.
Showing only tuples.
test=> SELECT pg_get_viewdef('fred');
SELECT x.x
FROM generate_series(1, 100) x(x);
Działa to dla widoków normalnych i zmaterializowanych.
Alternatywnie, jak mówi Richard, użyj 's \d+
, która wywołuje za kulisami pg_get_viewdef
.
0
SELECT * FROM "pg_catalog"."pg_matviews"
Oto lista wszystkich utworzonych zmaterializowanych widoków. Nigdy wcześniej nie używałam schematu pg_catalog ani go nie widziałem, a Navicat, GUI, którego używam, ukrywał "elementy systemu", które zawierały pg_catalog. Możesz wyłączyć ukrywanie skrętu w preferencjach aplikacji.
Lub '\ d + widokname' z psql. Po prostu '\ d viewname' podaje definicje kolumn. –