Partilhar via


TABELA DE DESEMBARQUE (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Armazém no Microsoft Fabric

Remove uma ou mais definições de tabelas e todos os dados, índices, triggers, restrições e especificações de permissões para essas tabelas. Qualquer vista ou procedimento armazenado que faça referência à tabela descartada deve ser explicitamente descartado usando DROP VIEW ou DROP PROCEDURE. Para reportar as dependências numa tabela, use sys.dm_sql_referencing_entities.

Transact-SQL convenções de sintaxe

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 }
[;]

Arguments

database_name

É o nome da base de dados onde 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 é a base 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 EXISTE

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

A tabela só se esta já existir é que a tabela é descartada condicionalmente.

schema_name

É o nome do esquema ao qual a tabela pertence.

table_name

É o nome da tabela a ser removida.

Observações

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 eliminadas primeiro.

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

Quando uma tabela é descartada, as regras ou padrões na tabela perdem sua vinculação e quaisquer restrições ou gatilhos associados à tabela são automaticamente descartados. Se recriar uma tabela, deverá associar novamente as regras apropriadas e os valores padrão, recriar quaisquer gatilhos e adicionar todas as restrições necessárias.

Se apagar 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 deixares uma tabela que contém uma varbinary(max) coluna com o FILESTREAM atributo, quaisquer dados armazenados no sistema de ficheiros não são removidos.

Quando uma tabela do livro-razão é eliminada, os seus objetos dependentes (a tabela de histórico e a vista do livro-razão) também são eliminados. Uma tabela de histórico ou uma vista de registo não pode ser descartada diretamente. O sistema aplica uma semântica de eliminação suave ao eliminar tabelas de registo e os seus objetos dependentes – na verdade, não são realmente descartados, mas sim marcados como descartados nas visualizações do catálogo do sistema e renomeados. Para mais informações, consulte considerações e limitações do Ledger.

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.

Na base de dados Fabric SQL, ao eliminar uma tabela é eliminada tanto da base de dados como do Fabric OneLake. Todos os dados espelhados da tabela descartada são removidos.

Realocação diferida

Quando uma tabela é eliminada, e a tabela ou os seus índices têm 128 extensões ou mais, o Motor de Base de Dados adia as alocações reais de distribuição de páginas, e os bloqueios associados, até depois de a transação ser confirmada. 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 deslocação e bloqueadas até que a transação seja confirmada. Na fase física, um processo em segundo plano remove as páginas marcadas para deslocação. Isto significa que o espaço libertado por DROP TABLE pode não estar disponível para novas alocações imediatamente.

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

Permissions

Requer permissão ALTER sobre o esquema a que a tabela pertence, CONTROL permissão sobre a tabela ou pertença ao db_ddladmin papel fixo da base de dados.

Se a instrução perder uma tabela de livro-registo, a ALTER LEDGER permissão é necessária.

Examples

A. Deixar uma tabela na base de dados atual

O exemplo seguinte remove a ProductVendor1 tabela, os seus dados e índices da base de dados atual.

DROP TABLE ProductVendor1;

B. Colocar uma tabela noutra base de dados

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

DROP TABLE AdventureWorks2022.dbo.SalesPerson2 ;

C. Abandonar uma tabela temporária

O exemplo seguinte cria uma tabela temporária, testa a sua existência, descarta-a e testa novamente a sua existência tentando executar uma SELECT sentença, o que falha. Este exemplo não utiliza 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. Eliminar uma tabela usando SE EXISTE

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

O exemplo seguinte cria uma tabela chamada T1. Depois, a segunda afirmação faz cair a tabela. A terceira instrução não executa nenhuma ação porque a tabela já está caída, no entanto não causa erro.

CREATE TABLE T1 (Col1 int);

DROP TABLE T1;

DROP TABLE IF EXISTS T1;