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

Waarom worden aliasnamen die hetzelfde zijn als de kolomnamen verwijderd wanneer ze worden opgeslagen als een weergave?

Dit is een beetje lang voor een opmerking. Jij zegt:

als de onderliggende tabelkolomnamen veranderen, hoeven de gebruikers van de weergave hun code niet te bewerken

Nou dat is een beetje waar. Als de onderliggende kolomnamen veranderen, wordt de weergave ongeldig. De code zal niet meer werken. U moet de weergave hoe dan ook opnieuw maken.

Als u zeker wilt zijn van de kolomnamen, kunt u de weergave expliciet maken met de kolomnamen:

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

Ik ben over het algemeen niet echt een grote fan van deze aanpak -- het kan grote schade aanrichten bij het toevoegen of herschikken van kolomnamen voor de weergave. Maar misschien waardeer je het.

Merk op dat ik de ORDER BY . heb verwijderd en TOP 100 PERCENT . Dit zijn hacks om de ORDER BY . te krijgen geaccepteerd door de SQL Server-compiler. Dat betekent niet dat de weergave gegarandeerd in een bepaalde volgorde staat.

Dit wordt vrij expliciet uitgelegd in de documentatie :

Belangrijk

De ORDER BY-component wordt alleen gebruikt om de rijen te bepalen die worden geretourneerd door de TOP- of OFFSET-component in de weergavedefinitie. De ORDER BY-clausule garandeert geen geordende resultaten wanneer de weergave wordt opgevraagd , tenzij ORDER BY ook is opgegeven in de zoekopdracht zelf.



  1. MySQL voert westerse codering uit in UTF-8 PHP-bestand

  2. Kan geen waarde naar sleutel schrijven \SOFTWARE wordt weergegeven voor SSMS-installatie op een Windows 7-machine met een beheerdersaccount

  3. phpMyAdmin - #1932 Tabel bestaat niet (sortering in gebruik) na herinstallatie

  4. Maak verbinding met een externe server via phpMyAdmin