Partilhar via


DROP TABLE (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Warehouse do PDW (Analytics Platform System) no Microsoft Fabric

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 DROP VIEW ou DROP PROCEDURE. Para relatar as dependências em uma tabela, use sys.dm_sql_referencing_entities.

Convenções de sintaxe de Transact-SQL

Sintaxe

-- Syntax for SQL Server, Azure SQL Database, Warehouse in Microsoft Fabric
  
DROP TABLE [ IF EXISTS ] { database_name.schema_name.table_name | schema_name.table_name | table_name } [ ,...n ]  
[ ; ]  
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse
  
DROP TABLE { database_name.schema_name.table_name | schema_name.table_name | table_name }
[;]  

Observação

Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.

Argumentos

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

O Banco de Dados SQL do Azure oferece suporte ao formato de nome de três partes database_name.[schema_name].object_name quando o database_name é o banco de dados atual ou o database_name é tempdb e o object_name começa com #. O Banco de Dados SQL do Azure não oferece suporte a nomes de quatro partes.

IF EXISTS
Aplica-se a: SQL Server (SQL Server 2016 (13.x) até a versão atual).

Remove condicionalmente a tabela somente se ela já existe.

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 você 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.

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.

Quando uma tabela do razão é removida, os objetos dependentes (a tabela de histórico e a exibição do razão) também são removidos. Uma tabela de histórico ou uma exibição do razão não pode ser removida diretamente. O sistema impõe uma semântica de exclusão reversível ao remover as tabelas do razão e os objetos dependentes, ou seja, eles não são removidos realmente, mas são marcados como removidos nas exibições do catálogo do sistema e renomeados. Para obter mais informações, confira Considerações e limitações do razão.

Importante

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

Exige a 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 .

Se a instrução emitir uma tabela contábil, a permissão ALTER LEDGER será necessária.

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 AdventureWorks2022. O exemplo pode ser executado a partir de qualquer banco de dados na instância do servidor.

DROP TABLE AdventureWorks2022.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. Este exemplo não usa a sintaxe IF EXISTS que está disponível com o SQL Server 2016 (13.x).

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;  

D. Descartando uma tabela usando IF EXISTS

Aplica-se a: SQL Server (SQL Server 2016 (13.x) até a versão atual).

O exemplo a seguir cria uma tabela chamada T1. Em seguida, a segunda instrução remove a tabela. A terceira instrução não realiza nenhuma ação porque a tabela já foi excluída, porém, não causa um erro.

CREATE TABLE T1 (Col1 INT);  
GO  
DROP TABLE IF EXISTS T1;  
GO  
DROP TABLE IF EXISTS T1;  

Consulte Também

ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
DELETE (Transact-SQL)
sp_help (Transact-SQL)
sp_spaceused (Transact-SQL)
TRUNCATE TABLE (Transact-SQL)
DROP VIEW (Transact-SQL)
DROP PROCEDURE (Transact-SQL)
EVENTDATA (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)