Compartilhar via


MESA DE QUEDA (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 }
[;]

Argumentos

database_name

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

Azure SQL Database suporta o formato database_name.schema_name.object_name de nome em três partes quando database_name é o banco de dados atual ou database_name é tempdb e object_name começa com # ou ##. O Azure SQL Database não suporta nomes de quatro partes.

SE EXISTIR

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 eliminar uma tabela que é referenciada por uma FOREIGN KEY restrição. A restrição de FOREIGN KEY referência ou a tabela de referência devem ser descartadas primeiro.

Múltiplas tabelas podem ser descartadas na mesma DROP TABLE instrução. Se tanto a tabela de referência em uma FOREIGN KEY restrição quanto a tabela com a chave primária ou única referenciada estiverem sendo descartadas na mesma DROP TABLE instrução, a tabela de referência deve ser listada primeiro.

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 a DELETE instrução ou usar a TRUNCATE TABLE instrução, a definição da tabela existe até ser eliminada usando DROP TABLE.

Se você dropar uma tabela que contém uma varbinary(max) coluna com o FILESTREAM atributo, qualquer dado armazenado no sistema de arquivos não é removido.

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 visualização de livro maior não pode ser descartada diretamente. O sistema impõe uma semântica de deleção suave ao eliminar tabelas de registro e seus objetos dependentes – eles não são realmente descartados, mas sim marcados como dropados nas visualizaçõ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 CREATE TABLE e não deve ser executado na mesma tabela no mesmo lote. Caso contrário, poderá ocorrer um erro inesperado.

No banco de dados SQL Fabric, ao eliminar uma tabela ela é retirada tanto do banco de dados quanto do Fabric OneLake. Todos os dados espelhados da tabela descartada são removidos.

Realocação diferida

Quando uma tabela é descartada, e a tabela ou seus índices têm 128 extensões ou mais, o Mecanismo de Banco de Dados adia as reales alocações de páginas e seus bloqueios associados até que a transação seja comprometida. A tabela e os índices são descartados em duas fases separadas: lógica e física. Na fase lógica, as unidades de alocação existentes são marcadas para desalocação e travadas até que a transação seja confirmada. Na fase física, um processo em segundo plano remove as páginas marcadas para deslocação. Isso significa que o espaço liberado por DROP TABLE pode não estar disponível para novas alocações imediatamente.

Se a recuperação acelerada do banco de dados for habilitada, as fases lógicas e físicas separadas são usadas independentemente do número de extensões.

Permissões

Requer permissão ALTER sobre o esquema ao qual a tabela pertence, CONTROL permissão sobre a tabela ou pertencimento ao db_ddladmin papel fixo de banco de dados.

Se a instrução cair em uma tabela de livro-caixa, a ALTER LEDGER permissão é 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 AdventureWorks2025. 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, a descarta e testa novamente sua existência tentando executar uma SELECT instrução, que falha. Este exemplo não usa a IF EXISTS sintaxe que está disponível a partir do SQL Server 2016 (13.x).

CREATE TABLE #temptable (col1 int);

INSERT INTO #temptable
VALUES (10);

SELECT col1 FROM #temptable;

IF OBJECT_ID(N'tempdb..#temptable', N'U') IS NOT NULL
  DROP TABLE #temptable;

SELECT col1 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á está descartada, porém não causa erro.

CREATE TABLE T1 (Col1 int);

DROP TABLE T1;

DROP TABLE IF EXISTS T1;