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

Hvorfor slettes aliasnavne, der er de samme som kolonnenavne, når de gemmes som en visning?

Det er lidt langt til en kommentar. Du siger:

hvis de underliggende tabelkolonnenavne ændrer sig, behøver brugerne af visningen ikke at redigere deres kode

Jamen det er sådan set rigtigt. Hvis de underliggende kolonnenavne ændres, vil visningen blive ugyldig. Koden vil ikke længere virke. Du bliver alligevel nødt til at genskabe visningen.

Hvis du vil sikre kolonnenavnene, kan du oprette visningen eksplicit med kolonnenavnene:

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

Jeg er generelt ikke en rigtig stor fan af denne tilgang -- det kan skabe kaos, når du tilføjer eller omarrangerer kolonnenavne til visningen. Men du vil måske sætte pris på det.

Bemærk, at jeg fjernede ORDER BY og TOP 100 PERCENT . Disse er hacks til at få ORDER BY accepteret af SQL Server-kompileren. Det betyder ikke, at udsigten med garanti er i en bestemt rækkefølge.

Dette er helt eksplicit forklaret i dokumentation :

Vigtigt

ORDER BY-udtrykket bruges kun til at bestemme de rækker, der returneres af TOP- eller OFFSET-udtrykket i visningsdefinitionen. ORDER BY-klausulen garanterer ikke bestilte resultater, når der forespørges på visningen , medmindre ORDER BY også er angivet i selve forespørgslen.



  1. MySQL Vis nulresultater i forespørgsel - med INDRE JOIN

  2. Kombiner udvalgte top 1 SQL-sætninger

  3. Indtast UTF8-data bekvemt til MySQL

  4. hvordan kan jeg kryptere en hel kolonne