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

Perché i nomi alias uguali ai nomi delle colonne vengono eliminati quando vengono archiviati come vista?

Questo è un po' lungo per un commento. Tu dici:

se i nomi delle colonne della tabella sottostante cambiano, gli utenti della vista non dovranno modificare il proprio codice

Bene, questo è un po' vero. Se i nomi delle colonne sottostanti cambiano, la visualizzazione verrà invalidata. Il codice non funzionerà più. Dovrai comunque ricreare la vista.

Se vuoi garantire i nomi delle colonne, puoi creare la vista esplicitamente con i nomi delle colonne:

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

In genere non sono un grande fan di questo approccio:può creare scompiglio quando si aggiungono o si riorganizzano i nomi delle colonne per la vista. Ma potresti apprezzarlo.

Nota che ho rimosso ORDER BY e TOP 100 PERCENT . Questi sono hack per ottenere ORDER BY accettato dal compilatore SQL Server. Ciò non significa che la visualizzazione sia garantita in un ordine particolare.

Questo è spiegato in modo abbastanza esplicito in documentazione :

Importante

La clausola ORDER BY viene utilizzata solo per determinare le righe restituite dalla clausola TOP o OFFSET nella definizione della vista. La clausola ORDER BY non garantisce i risultati ordinati quando viene eseguita una query sulla vista , a meno che nella query stessa non sia specificato ORDER BY.