Las tablas temporales, también conocidas como tablas temp, son ampliamente utilizadas por los administradores de bases de datos y desarrolladores en SQL Server. Sin embargo, es importante eliminar la tabla temp antes de crearla para evitar errores. En este artículo, exploraremos el concepto de las tablas temporales y discutiremos diversas técnicas para eliminarlas.
Tipos de tablas temporales
Existen dos tipos de tablas temporales en SQL Server:
- Tablas temporales locales: Estas tablas son visibles solo dentro de la sesión que las creó. Se identifican con un solo símbolo de numeral “#” al comienzo de su nombre. Cuando se cierra la sesión, la tabla temporal local se elimina automáticamente.
- Tablas temporales globales: Estas tablas pueden ser accedidas desde todas las demás conexiones. Se identifican con un doble símbolo de numeral “##” al comienzo de su nombre. Cuando se cierra la sesión en la que se creó la tabla temporal global, la tabla se elimina automáticamente.
¿Dónde se almacenan las tablas temporales?
Las tablas temporales se crean en la base de datos tempdb. Las tablas temporales locales se les asigna un número aleatorio al final de su nombre para evitar conflictos con las tablas creadas por otras conexiones. Por otro lado, las tablas temporales globales se crean con sus nombres originales.
Eliminación de tablas temporales
Antes de crear una tabla temporal, se recomienda verificar si la tabla ya existe. Esto ayuda a evitar el error “Ya existe un objeto con el nombre ‘#nombretablatemp’ en la base de datos”. Aquí hay tres técnicas para eliminar tablas temporales:
1. Usando la función OBJECT_ID
La función OBJECT_ID se utiliza para obtener el número de identificación de un objeto de base de datos. Al utilizar esta función, podemos verificar la existencia de una tabla temporal en la base de datos tempdb y eliminarla si existe. Aquí hay un ejemplo para tablas temporales locales:
IF OBJECT_ID(N'tempdb..#LocalCustomer') IS NOT NULL BEGIN DROP TABLE #LocalCustomer END
Y aquí hay un ejemplo para tablas temporales globales:
IF OBJECT_ID(N'tempdb..##GlobalCustomer') IS NOT NULL BEGIN DROP TABLE ##GlobalCustomer END
2. Usando la tabla sys.tables
La tabla sys.tables devuelve las tablas de usuario en la base de datos relevante. Al verificar la existencia de una tabla temporal en esta tabla, podemos eliminarla si existe. Aquí hay un ejemplo para tablas temporales locales:
IF EXISTS (SELECT [name] FROM tempdb.sys.tables WHERE [name] LIKE '#LocalCustomer%') BEGIN DROP TABLE #LocalCustomer; END;
Y aquí hay un ejemplo para tablas temporales globales:
IF EXISTS (SELECT [name] FROM tempdb.sys.tables WHERE [name] LIKE '##GlobalCustomer%') BEGIN DROP TABLE ##GlobalCustomer; END;
3. Usando la sentencia DROP TABLE IF EXISTS
La sentencia DROP TABLE IF EXISTS está disponible en SQL Server 2016 y versiones superiores. Verifica la existencia de una tabla y la elimina si existe. Aquí hay un ejemplo para tablas temporales locales:
DROP TABLE IF EXISTS #LocalCustomer
Y aquí hay un ejemplo para tablas temporales globales:
DROP TABLE IF EXISTS ##GlobalCustomer
Conclusión
En este artículo, hemos explorado los conceptos básicos de las tablas temporales en SQL Server y discutido diversas técnicas para eliminarlas. Si bien existen múltiples métodos disponibles, la sentencia DROP TABLE IF EXISTS se considera la mejor práctica para eliminar tablas temporales. Al utilizar estas técnicas, puede administrar eficazmente las tablas temporales en su entorno de SQL Server.