SSMS
 sql >> Datenbank >  >> Database Tools >> SSMS

Warum werden Aliasnamen, die mit den Spaltennamen identisch sind, gelöscht, wenn sie als Ansicht gespeichert werden?

Das ist ein bisschen lang für einen Kommentar. Sie sagen:

wenn sich die Namen der zugrunde liegenden Tabellenspalten ändern, müssen die Benutzer der Ansicht ihren Code nicht bearbeiten

Nun, das ist irgendwie wahr. Wenn sich die zugrunde liegenden Spaltennamen ändern, wird die Ansicht ungültig. Der Code funktioniert nicht mehr. Sie müssen die Ansicht trotzdem neu erstellen.

Wenn Sie die Spaltennamen sicherstellen möchten, können Sie die Ansicht explizit erstellen mit den Spaltennamen:

Create view vBook1 (ISBN, Title) AS
    SELECT ISBN, Title
    FROM dbo.tBook;

Ich bin im Allgemeinen kein wirklich großer Fan dieses Ansatzes – er kann Chaos anrichten, wenn Spaltennamen für die Ansicht hinzugefügt oder neu angeordnet werden. Aber Sie werden es vielleicht zu schätzen wissen.

Beachten Sie, dass ich ORDER BY entfernt habe und TOP 100 PERCENT . Dies sind Hacks, um den ORDER BY zu erhalten vom SQL Server-Compiler akzeptiert. Das bedeutet nicht, dass die Ansicht garantiert in einer bestimmten Reihenfolge angezeigt wird.

Dies wird ganz explizit in Dokumentation :

Wichtig

Die ORDER BY-Klausel wird nur verwendet, um die Zeilen zu bestimmen, die von der TOP- oder OFFSET-Klausel in der Ansichtsdefinition zurückgegeben werden. Die ORDER BY-Klausel garantiert keine geordneten Ergebnisse, wenn die Ansicht abgefragt wird , es sei denn, ORDER BY ist auch in der Abfrage selbst angegeben.