SSMS
 sql >> Base de données >  >> Database Tools >> SSMS

Pourquoi les noms d'alias sont-ils identiques aux noms de colonne lorsqu'ils sont stockés en tant que vue ?

C'est un peu long pour un commentaire. Vous dites :

si les noms des colonnes de la table sous-jacente changent, les utilisateurs de la vue n'auront pas à modifier leur code

Eh bien, c'est un peu vrai. Si les noms de colonne sous-jacents changent, la vue sera invalidée. Le code ne fonctionnera plus. Vous devrez de toute façon recréer la vue.

Si vous voulez garantir les noms de colonne, vous pouvez créer la vue explicitement avec les noms de colonnes :

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

Je ne suis généralement pas vraiment un grand fan de cette approche - cela peut faire des ravages lors de l'ajout ou de la réorganisation des noms de colonnes pour la vue. Mais vous pourriez l'apprécier.

Notez que j'ai supprimé le ORDER BY et TOP 100 PERCENT . Ce sont des hacks pour obtenir le ORDER BY accepté par le compilateur SQL Server. Cela ne signifie pas que la vue est garantie d'être dans un ordre particulier.

Ceci est assez explicitement expliqué dans le documentation :

Important

La clause ORDER BY est utilisée uniquement pour déterminer les lignes renvoyées par la clause TOP ou OFFSET dans la définition de la vue. La clause ORDER BY ne garantit pas l'ordre des résultats lorsque la vue est interrogée , sauf si ORDER BY est également spécifié dans la requête elle-même.