Ich frage mich, wie man die Definition einer materialisierten Ansicht in Postgres abfragt. Was ich als Referenz erhofft habe, ist sehr ähnlich dem, was Sie für eine reguläre Ansicht tun können:
SELECT * FROM information_schema.views WHERE table_name = 'some_view';
Das gibt Ihnen die folgenden Spalten:
table_catalog
table_schema
table_name
view_definition
check_option
is_updatable
is_insertable_into
is_trigger_updatable
is_trigger_deletable
is_trigger_insertable_into
Ist dies für materialisierte Ansichten möglich?
Aus meiner bisherigen Forschung geht hervor, dass materialisierte Ansichten bewusst vom information_schema ausgeschlossen sind, weil
Das Informationsschema kann nur Objekte anzeigen, die im SQL-Standard vorhanden sind.
( http://www.postgresql.org/message-id/3794.1412980686@sss.pgh.pa.us )
Da sie von information_schema völlig ausgeschlossen zu sein scheinen, bin ich mir nicht sicher, wie ich vorgehen soll, aber ich möchte zwei Dinge tun:
- Abfrage, ob eine bestimmte materialisierte Ansicht vorhanden ist. (Bisher habe ich nur versucht, eine Mattenansicht mit demselben Namen zu erstellen und zu prüfen, ob sie in die Luft geht.)
- Fragen Sie anschließend die Definition der materialisierten Ansicht ab (ähnlich wie in der
view_definition
Spalte "Ein"information_schema.views
).
SELECT to_regclass('some_schema.some_mat_view')
- Wenn es gefunden wird, muss es sich jedoch nicht um ein MV handeln. Details: stackoverflow.com/questions/20582500/…