Es un recurso muy útil en algunas situaciones en las que requerimos
procesar información de las tablas y poderlas modificar sin necesidad de
alterar la original (claro siempre podemos adoptar otras técnicas), y
con la principal característica de que solo están disponibles mientras
dure abierta la conexión, ya que se eliminan inmediatamente cuando
cerramos la conexión. Las tablas temporales pueden eliminarse de forma
explicita ( utilizando el comando DELETE) pero la idea implicita es que
no si nos “olvidamos” de hacerlo MySQL lo hace por nosotros.
Se puede crear una tabla temporal de varias maneras:
- Definiendo de forma explicita sus columnas
|
CREATE TEMPORARY TABLE nombreTablaTemporal (...definicion de columnas...);
|
- Partiendo de una existente (clonación)
|
CREATE TEMPORARY TABLE nombreTablaTemporal LIKE tablaOriginal;
|
- En “vuelo” a partir de un ResultSet
1
|
CREATE TEMPORARY TABLE nombreTablaTemporal SELECT ... ;
|
Las tablas temporales están enlazadas con una conexión especifica,
por lo que varios clientes pueden crear tablas temporales con el mismo
nombre sin que se interfieran unas con otras. Otra propiedad de estas
tablas es que pueden tener el nombre de una tabla permanente, en este
caso la tabla temporal “esconde” la permanente mientras la primera
exista, facilitando el uso de copias de tablas permanentes sin afectar a
la original, si llegásemos a eliminar la tabla temporal de forma
explicita (sentencia DROP Table) y esta “esconde” a la permentente, aún
conservariamos la permanente.
A tener en cuenta
- Si quieres reutilizar una tabla temporal que previamente has creado,
debes eliminarla explicitamente primero, ya que si intentas crear dicha
tabla temporal se generará un error.
- Debes tener cuidado cuando trabajas con tablas temporales que
“esconden” a tablas permanentes, ya que una mala gestión de errores de
desconexión acarreará la posibilidad de perder la tabla temporal y
seguir trabajando con la permanente.
Tomado de: http://www.elclubdelprogramador.com