DROP TABLE (Transact-SQL)
Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)Warehouse in 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)
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários