sql >> Base de Datos >  >> Database Tools >> SSMS

¿Por qué los nombres de alias iguales a los nombres de las columnas se eliminan cuando se almacenan como una vista?

Esto es un poco largo para un comentario. Tu dices:

si los nombres de las columnas de la tabla subyacente cambian, los usuarios de la vista no tendrán que editar su código

Bueno, eso es algo cierto. Si los nombres de las columnas subyacentes cambian, la vista se invalidará. El código ya no funcionará. Tendrá que volver a crear la vista de todos modos.

Si quiere asegurarse de los nombres de las columnas, puede crear la vista explícitamente con los nombres de las columnas:

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

En general, no soy un gran admirador de este enfoque:puede causar estragos al agregar o reorganizar los nombres de las columnas para la vista. Pero podrías apreciarlo.

Tenga en cuenta que eliminé el ORDER BY y TOP 100 PERCENT . Estos son trucos para obtener el ORDER BY aceptado por el compilador de SQL Server. Eso no significa que la vista esté garantizada en un orden en particular.

Esto se explica de manera bastante explícita en documentación :

Importante

La cláusula ORDER BY solo se usa para determinar las filas que devuelve la cláusula TOP o OFFSET en la definición de la vista. La cláusula ORDER BY no garantiza resultados ordenados cuando se consulta la vista , a menos que también se especifique ORDER BY en la propia consulta.