Esta documentación está archivada y no tiene mantenimiento.

DROP TABLE (Transact-SQL)

Actualizado: 12 de diciembre de 2006

Quita una o varias definiciones de tabla y todos los datos, índices, desencadenadores, restricciones y especificaciones de permisos de esas tablas. Las vistas o procedimientos almacenados que hagan referencia a la tabla quitada se deben quitar explícitamente con DROP VIEW o DROP PROCEDURE.


DROP TABLE [ database_name . [ schema_name ] . | schema_name . ]
        table_name [ ,...n ] [ ; ]

database_name

Es el nombre de la base de datos en la que se creó la tabla.

schema_name

Es el nombre del esquema al que pertenece la tabla.

table_name

Es el nombre de la tabla que se va a quitar.

No se puede utilizar DROP TABLE para quitar una tabla a la que haga referencia una restricción FOREIGN KEY. Primero se debe quitar la restricción FOREIGN KEY o la tabla de referencia. Si la tabla de referencia y la tabla que tiene la clave principal se van a quitar en la misma instrucción DROP TABLE, la tabla de referencia debe aparecer primero.

Se pueden quitar varias tablas de cualquier base de datos. Si la tabla que se va a quitar hace referencia a la clave principal de otra tabla que también se va a quitar, la tabla de referencia con la clave externa debe aparecer antes que la tabla que tiene la clave principal a la que se hace referencia.

Cuando se quita la tabla, las reglas o valores predeterminados de la tabla pierden sus enlaces y se quitan automáticamente las restricciones o desencadenadores asociados con la tabla. Si vuelve a crear una tabla, debe volver a enlazar las reglas y valores predeterminados apropiados, volver a crear los desencadenadores y agregar todas las restricciones necesarias.

Si elimina todas las filas de una tabla con DELETE tablename o utiliza la instrucción TRUNCATE TABLE, la tabla existe hasta que se quita.

Los índices y las tablas grandes que utilizan más de 128 extensiones se quitan en dos fases independientes: lógica y física. En la fase lógica, las unidades de asignación existentes que utiliza la tabla se marcan para la cancelación de asignación y se bloquean hasta que se confirme la transacción. En la fase física, las páginas IAM marcadas para cancelación de asignación se quitan físicamente por lotes. Para obtener más información, vea Quitar y volver a generar objetos grandes.

Es necesario el permiso ALTER en el esquema al que pertenece la tabla, el permiso CONTROL en la tabla o la pertenencia a la función fija de base de datos db_ddladmin.

A. Quitar una tabla de la base de datos actual

En el siguiente ejemplo se quita la tabla ProductVendor1, y sus datos e índices de la base de datos actual.

DROP TABLE ProductVendor1 ;

B. Quitar una tabla de otra base de datos

En el siguiente ejemplo se quita la tabla SalesPerson2 de la base de datos AdventureWorks. El ejemplo se puede ejecutar desde cualquier base de datos de la instancia de servidor.

DROP TABLE AdventureWorks.dbo.SalesPerson2 ;

C. Quitar una tabla temporal

En el siguiente ejemplo se crea una tabla temporal, se comprueba si existe, se quita y se comprueba de nuevo si existe.

USE AdventureWorks;
GO
CREATE TABLE #temptable (col1 int);
GO
INSERT INTO #temptable
VALUES (10);
GO
SELECT * FROM #temptable;
GO
IF OBJECT_ID(N'tempdb..#temptable', N'U') IS NOT NULL 
DROP TABLE #temptable;
GO
--Test the drop.
SELECT * FROM #temptable;

Versión Historial

12 de diciembre de 2006

Contenido modificado:
  • En "Permisos", se agregó que el permiso ALTER en el esquema al que la tabla pertenece también es suficiente para ejecutar DROP TABLE.
Mostrar: