Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Azure SQL Managed Instance
Azure Synapse Analytics
Sistema 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.
Base de Dados SQL do Azure 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 Base de Dados SQL do Azure 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;