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
Azure SQL Database
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.
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;