Published on

March 15, 2020

Comprendiendo las tablas temporales y las técnicas de eliminación en SQL Server

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.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.