Otro uso que ninguna de las respuestas anteriores parece haber mencionado es la implementación más fácil de cambios en la estructura de la tabla.
Digamos que desea retirar una tabla ( T_OLD
) que contiene datos para usuarios activos y, en su lugar, usar una nueva tabla con datos similares (nombrados T_NEW
) pero que tenga datos para usuarios activos e inactivos, con una columna adicional active
.
Si su (s) sistema (s) tiene miles de consultas que las tienen SELECT whatever FROM T_OLD WHERE whatever
, tiene dos opciones para la implementación:
1) Cold Turkey : cambie la base de datos y, al mismo tiempo, cambie, pruebe y libere numerosos fragmentos de código que contenían dicha consulta. MUY difícil de hacer (o incluso coordinar), muy arriesgado. Malo.
2) Gradual : cambie la base de datos creando la T_NEW
tabla, soltando la T_OLD
tabla y en su lugar creando una VISTA llamada T_OLD
que imita la T_OLD
tabla al 100% (por ejemplo, la consulta de vista es SELECT all_fields_except_active FROM T_NEW WHERE active=1
).
Eso le permitiría evitar la liberación de CUALQUIER código que se selecciona actualmente T_OLD
y realizar los cambios para migrar el código T_OLD
a T_NEW
su gusto.
Este es un ejemplo simple, hay otros mucho más involucrados.
PD Por otro lado, probablemente debería haber tenido una API de procedimiento almacenado en lugar de consultas directas de T_OLD
, pero ese no es siempre el caso.