2016-03-29 5 views
0

Ich habe eine Ansicht aus der Tabelle erstellt alspostgresql Abfrage zurückgegeben erfolgreich ohne Ergebnis, während Ansicht erstellen

CREATE VIEW dp_val_view 
AS 
select dp_id,dp_id,dp_s,dp_n,dp_ord,id,answer,date,eny_date 
from 
(
    select select dp_id,dp_id,dp_s,dp_n,dp_ord,id,answer,date,eny_date,row_number(*) 
    over (partition by dp_id ,dp_ord ,id order by eny_date desc) as rn 
    from values 
) dt 
where rn < 2 

Ansicht erstellt erfolgreich und ich habe als Abfrage erfolgreich ohne Ergebnis zurückgegeben ... Danach, wenn ich versuche Um auf die Tabellendaten zuzugreifen, ist es eine tagesaktuelle Auffrischungs-Tabelle. Bedeutet das, dass der Wert aus der Tabelle im Hintergrund in die Ansicht eingefügt wird?

+0

Welches Ergebnis haben Sie erwartet? "Erfolgreich mit keinem Ergebnis zurückgegeben" scheint richtig zu sein. Außerdem speichert View die Tabellendaten nicht physisch, sodass kein Hintergrund eingefügt wird. Wo siehst du den Text "erfrischender Tisch bitte"? –

Antwort

0

Eine Ansicht ist nur eine "Abkürzung" für eine Abfrage. In der (normalen) Ansicht werden keine Daten gespeichert, und beim Ausführen von create view werden keine Daten "eingefügt".

Und weil create view nur speichert die Abfrage in der Datenbank, ist es nicht „Rückkehr“ alle Ergebnisse, wie ein create table zurückkehren keine Ergebnisse aus dieser Tabelle.

Wenn Sie die Ansicht auswählen, führt die Datenbank die zugrunde liegende Abfrage aus. Es ist genau so, als hätten Sie die Abfrage direkt ausgeführt.

0

Ansichten sind nur Wrapper, oder in anderen Worten können wir Alias ​​für die längere Abfrage sagen.

Es wird nichts in die Ansicht eingefügt. Wenn Sie die Ansicht abfragen, wird intern die von Ihnen angegebene Auswahlabfrage ausgeführt.

Eine gute Erklärung im Handbuch http://www.postgresql.org/docs/9.2/static/sql-createview.html

Der Blick nicht physisch materialisiert. Stattdessen wird die Abfrage jedes Mal ausgeführt, wenn auf die Ansicht in einer Abfrage verwiesen wird.

Verwandte Themen