Partager via


TABLE DÉBARQUABLE (Transact-SQL)

S’applique à :ENTREPÔT PDW (SQL Database) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)Dans Microsoft Fabric

Supprime une ou plusieurs définitions de table ainsi que toutes les données, index, déclencheurs, contraintes et spécifications d'autorisation se rapportant à celles-ci. Toute vue ou procédure stockée faisant référence à la table supprimée doit être supprimée explicitement au moyen de l’instruction DROP VIEW ou DROP PROCEDURE. Pour signaler les dépendances sur une table, utilisez sys.dm_sql_referencing_entities.

Conventions de la syntaxe Transact-SQL

Syntaxe

-- 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

Nom de la base de données dans laquelle la table a été créée.

Azure SQL Database prend en charge le format database_name.schema_name.object_name de nom en trois parties lorsque database_name est la base de données actuelle ou database_name est tempdb et object_name commence par # ou ##. Azure SQL Database ne prend pas en compte les noms en quatre parties.

S’IL EXISTE

S’applique à: SQL Server (de SQL Server 2016 (13.x) à la version actuelle).

Supprime, de manière conditionnelle, la table uniquement si elle existe déjà.

schema_name

Nom du schéma auquel appartient la table.

table_name

Nom de la table à supprimer.

Notes

DROP TABLE ne peut pas être utilisé pour supprimer une table référencée par une FOREIGN KEY contrainte. La contrainte de référencement FOREIGN KEY ou la table de référencement doivent d’abord être supprimées.

Plusieurs tables peuvent être supprimées dans la même DROP TABLE phrase. Si la table de référencement dans une FOREIGN KEY contrainte et la table contenant la clé primaire ou unique référencée sont toutes deux supprimées dans la même DROP TABLE instruction, la table de référencement doit être listée en premier.

Lorsqu'une table est supprimée, les règles et les valeurs par défaut liées à celle-ci sont dissociées et toutes les contraintes et les déclencheurs qui lui sont associés sont automatiquement supprimés. Si vous recréez la table, vous devez réassocier les règles et valeurs par défaut appropriées, recréer les déclencheurs et ajouter les toutes les contraintes nécessaires.

Si vous supprimez toutes les lignes d’une table en utilisant l’instruction DELETE ou utilisez l’instruction TRUNCATE TABLE , la définition de la table existe jusqu’à ce qu’elle soit supprimée en utilisant DROP TABLE.

Si vous déposez une table contenant une varbinary(max) colonne avec l’attribut FILESTREAM , toutes les données stockées dans le système de fichiers ne sont pas supprimées.

Quand une table de registre est supprimée, ses objets dépendants (la table d’historique et la vue du registre) sont également supprimés. Une table d’historique ou une vue grand livre ne peut pas être supprimée directement. Le système applique une sémantique de suppression douce lors de la suppression des tables du registre et de leurs objets dépendants – ils ne sont pas réellement supprimés, mais sont marqués comme abandonnés dans les vues du catalogue système et renommés. Pour plus d’informations, consultez les considérations et limitations relatives au registre.

Important

DROP TABLE et CREATE TABLE ne devrait pas être exécuté sur la même table dans le même lot. Sinon, une erreur inattendue risque de se produire.

Dans la base de données SQL Fabric, supprimer une table la retire à la fois de la base de données et de Fabric OneLake. Toutes les données en miroir pour la table supprimée sont supprimées.

Allocation différée

Lorsqu’une table est supprimée et que la table ou ses index comptent 128 étendues ou plus, le moteur de base de données reporte les deallocations réelles des pages, ainsi que leurs verrous associés, jusqu’à ce que la transaction soit engagée. Le tableau et les index sont supprimés en deux phases distinctes : logique et physique. Lors de la phase logique, les unités d’allocation existantes sont marquées pour la désallocation et verrouillées jusqu’à ce que la transaction soit validée. Lors de la phase physique, un processus en arrière-plan supprime les pages marquées pour la délocalisation. Cela signifie que l’espace libéré par DROP TABLE pourrait ne pas être disponible immédiatement pour de nouvelles allocations.

Si la récupération accélérée de la base de données est activée, les phases logique et physique séparées sont utilisées, quel que soit le nombre d’étendues.

autorisations

Nécessite la ALTER permission sur le schéma auquel appartient la table, CONTROL l’autorisation sur la table, ou l’appartenance au db_ddladmin rôle de base de données fixe.

Si l’instruction supprime une table de registre, la ALTER LEDGER permission est requise.

Exemples

R. Suppression d'une table dans la base de données active

Cet exemple supprime la table ProductVendor1 ainsi que ses données et ses index de la base de données active.

DROP TABLE ProductVendor1;

B. Suppression d'une table dans une autre base de données

L'exemple suivant supprime la table SalesPerson2 de la base de données AdventureWorks2025. Cet exemple peut être exécuté à partir de n'importe quelle base de données de l'instance de serveur.

DROP TABLE AdventureWorks2022.dbo.SalesPerson2 ;

C. Suppression d'une table temporaire

L’exemple suivant crée une table temporaire, teste son existence, la supprime, puis teste à nouveau son existence en tentant d’exécuter une SELECT instruction, ce qui échoue. Cet exemple n’utilise pas la IF EXISTS syntaxe disponible à partir de 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. Suppression d’une table à l’aide de IF EXISTS

S’applique à: SQL Server (de SQL Server 2016 (13.x) à la version actuelle).

L’exemple suivant crée une table nommée T1. Ensuite, la deuxième instruction supprime la table. La troisième instruction n’effectue aucune action car la table est déjà supprimée, mais elle ne provoque pas d’erreur.

CREATE TABLE T1 (Col1 int);

DROP TABLE T1;

DROP TABLE IF EXISTS T1;