¿Por qué está usando '*' para crear una vista incorrecta?¿Por qué usar '*' para construir una vista es malo?
Supongamos que tiene una unión compleja y que todos los campos se pueden usar en alguna parte.
Luego solo tiene que elegir los campos necesarios.
SELECT field1, field2 FROM aview WHERE ...
La vista "Aview" podría ser SELECT table1.*, table2.* ... FROM table1 INNER JOIN table2 ...
Tenemos un problema si 2 campos tienen el mismo nombre en tabla1 y tabla2.
¿Es esta la única razón por la que utilizar '*' en una vista es malo?
Con '*', puede usar la vista en un contexto diferente porque la información está allí.
¿Qué me estoy perdiendo?
Saludos
Por favor, compruebe mi otro comentario, en SQL Server todos los cambios no son necesariamente aceptadas. – user12861
Además, el código que utiliza la vista no debe usar *, por lo que puede ser bastante razonable usar * en la vista, y la carga estará en el código que utiliza la vista para asegurarse de que no esté usando *. –
El comentario al final es completamente incorrecto (al menos en el servidor sql) - sucede lo contrario: los cambios en las tablas subyacentes se ignoran silenciosamente. Esto es lo que @ user12861 menciona. En el servidor sql, cualquier vista que use select * deberá descartarse y volverse a crear cuando la tabla de subyacencia cambie, de lo contrario, silenciosamente, no se mostrarán todas las columnas. Esta es una forma bastante mala de falla, ya que es poco probable que se recoja en un entorno de desarrollo en el que se está reconstruyendo su base de datos desde cero con regularidad. También es muy fácil olvidarse de colocar y reconstruir todas las vistas en una tabla cuando agrega una columna –