Ver Mensaje Individual
  #6 (permalink)  
Antiguo 13/07/2011, 09:56
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Creación de vistas pone nombre tabla por delante

Si quieres, siempre tienes la oportunidad de bajarte el código fuente y modificarlo para que haga lo que tu quieres...

Pero sería buena idea que analizases por qué se implementó de esa forma; probablemente verías que las razones de esa forma tienen mucho que ver con la portabilidad de las bases de datos.
Una de las razones es que la definición de las tablas (y la vista es una tabla materializada en una consulta), se almacena en la base information_schema, en la cual cada componente está desglosado de una forma jerárquica. De allí que haya una tabla TABLES, otra DB, otra COLUMNS, otra TRIGGERS, etc.
Por cada tabla hay una X cantidad de registros de COLUMNS, con indicación de origen del dato y orden en la misma. Esto hace que el sistema deba registrar una a una las columnas y no puede registrar una columna "*", porque eso no representable. Si pretende ubicar esa columna dentro de la tabla origen, simplemente no la encontrará, porque no existe.
El problema es que si intentas hacer un algoritmo tal que sea posible sobre la base de un "*" reconstruir la tabla, según la definición de la vista, puedes meterte en un loop eterno, si la vista tiene JOINs. El sistema no puede permitir eso, y por tanto no le conviene almacenar la vista con una definición de ese tipo.
En otras palabras, lo que a tí te parece absurdo es necesario para darle calidad, eficiencia y precisión al sistema.
Si tu problema es que no quieres andar sacando y poniendo código cuando reeditas, haz lo mismo que yo: Guarda aparte los scripts que generan las vistas. Es la mejor solución.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)