DROP TABLE (Transact-SQL)

Remove uma ou mais definições de tabela e todos os dados, índices, gatilhos, restrições e especificações de permissão dessas tabelas. Qualquer exibição ou procedimento armazenado que faça referência à tabela descartada deverá ser descartado explicitamente utilizando-se DROP VIEW ou DROP PROCEDURE. Para relatar as dependências em uma tabela, use sys.dm_sql_referencing_entities.

Sintaxe

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

Argumentos

  • database_name
    É o nome do banco de dados no qual a tabela foi criada.

  • schema_name
    É o nome do esquema ao qual a tabela pertence.

  • table_name
    É o nome da tabela a ser removida.

Comentários

DROP TABLE não pode ser usado para descartar uma tabela que é referenciada por uma restrição FOREIGN KEY. A restrição FOREIGN KEY que faz referência ou a tabela de referência deve ser primeiramente descartada. Se a tabela de referência e a tabela que contém a chave primária forem descartadas na mesma instrução DROP TABLE, a tabela de referência deverá ser listada em primeiro lugar.

Podem ser descartadas várias tabelas em qualquer banco de dados. Se uma tabela que está sendo descartada fizer referência à chave primária de outra tabela que também está sendo descartada, a tabela de referência com a chave estrangeira deverá ser listada antes da tabela que contém a chave primária que está sendo referenciada.

Quando uma tabela for descartada, as regras ou os padrões da tabela perderão sua associação e quaisquer restrições ou gatilhos associados à tabela serão descartados automaticamente. Se você recriar uma tabela, deverá associar novamente as regras e padrões apropriados, recriar quaisquer gatilhos e adicionar todas as restrições necessárias.

Se excluir todas as linhas de uma tabela usando DELETE tablename ou usar a instrução TRUNCATE TABLE, a tabela existirá até que ela seja descartada.

Tabelas e índices grandes que usem mais de 128 extensões são descartados em duas fases separadas: a fase lógica e a física. Na fase lógica, as unidades de alocação existentes usadas pela tabela são marcadas para desalocação e bloqueadas até que a transação seja confirmada. Na fase física, as páginas IAM marcadas para desalocação são descartadas fisicamente em lotes. Para obter mais informações, consulte Descartando e recriando objetos grandes.

Se você descartar uma tabela que contém uma coluna VARBINARY(MAX) com o atributo FILESTREAM, os dados armazenados no sistema de arquivos não serão removidos.

Observação importanteImportante

DROP TABLE e CREATE TABLE não devem ser executados na mesma tabela no mesmo lote. Caso contrário, poderá ocorrer um erro inesperado.

Permissões

Requer permissão ALTER no esquema ao qual a tabela pertence, permissão CONTROL na tabela ou associação na função de banco de dados fixa db_ddladmin.

Exemplos

A. Descartando uma tabela no banco de dados atual

O exemplo a seguir remove a tabela ProductVendor1 e seus dados e índices do banco de dados atual.

DROP TABLE ProductVendor1 ;

B. Descartando uma tabela em outro banco de dados

O exemplo a seguir descarta a tabela SalesPerson2 no banco de dados AdventureWorks2008R2. O exemplo pode ser executado a partir de qualquer banco de dados na instância do servidor.

DROP TABLE AdventureWorks2008R2.dbo.SalesPerson2 ;

C. Descartando uma tabela temporária

O exemplo a seguir cria uma tabela temporária, testa sua existência, descarta a mesma e testa novamente sua existência.

USE AdventureWorks2008R2;
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;