DROP TABLE (Transact-SQL)
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. Para crear informes de las dependencias de una tabla, utilice sys.dm_sql_referencing_entities.
Sintaxis
DROP TABLE [ database_name . [ schema_name ] . | schema_name . ]
table_name [ ,...n ] [ ; ]
Argumentos
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.
Notas
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.
Si quita una tabla que contiene una columna de tipo VARBINARY(MAX) con el atributo FILESTREAM, los datos almacenados en el sistema de archivos no se quitarán.
Importante |
---|
DROP TABLE y CREATE TABLE no se deben ejecutar en la misma tabla en el mismo lote. De lo contrario, podría producirse un error inesperado. |
Permisos
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.
Ejemplos
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;
Vea también
Referencia
Conceptos
Historial de cambios
Contenido actualizado |
---|
Se ha agregado una nota que hace referencia a no quitar y crear la misma tabla en un lote único. |