Partager via


DROP TABLE (Transact-SQL)

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.

Syntaxe

DROP TABLE [ database_name . [ schema_name ] . | schema_name . ]
        table_name [ ,...n ] [ ; ]

Arguments

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

  • schema_name
    Nom du schéma auquel appartient la table.

  • table_name
    Nom de la table à supprimer.

Notes

L'instruction DROP TABLE ne peut pas être utilisée pour supprimer une table référencée par une contrainte FOREIGN KEY. Vous devez au préalable supprimer la contrainte FOREIGN KEY ou la table qui la référence. Si la table de référence et la table qui contient la clé primaire sont supprimées dans la même instruction DROP TABLE, la table de référence doit figurer en premier dans la liste.

Il est possible de supprimer plusieurs tables de n'importe quelle base de données. Si une table qui est supprimée fait référence à la clé primaire d'une autre table qui est également en cours de suppression, la table de référence qui contient la clé étrangère doit être répertoriée avant la table contenant la clé primaire à laquelle il est fait référence.

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 à l'aide de DELETE tablename ou si vous utilisez l'instruction TRUNCATE TABLE, la table existe jusqu'à ce que vous la supprimiez.

Les tables et index volumineux qui utilisent plus de 128 étendues sont supprimés en deux phases distinctes : logique et physique. Au cours de la phase logique, les unités d'allocation existantes utilisées par la table sont marquées pour la désallocation et verrouillées jusqu'à la validation de la transaction. Au cours de la phase physique, les pages IAM marquées pour la désallocation sont supprimées physiquement dans des traitements. Pour plus d'informations, consultez Suppression et reconstruction d'objets volumineux.

Si vous supprimez une table qui contient une colonne VARBINARY(MAX) avec l'attribut FILESTREAM, toutes les données stockées dans le système de fichiers ne seront pas supprimées.

Important

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

Autorisations

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

Exemples

A. 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 AdventureWorks2008R2. Cet exemple peut être exécuté à partir de n'importe quelle base de données de l'instance de serveur.

DROP TABLE AdventureWorks2008R2.dbo.SalesPerson2 ;

C. Suppression d'une table temporaire

Cet exemple crée une table temporaire, teste son existence, la supprime et teste une nouvelle fois son existence.

USE AdventureWorks2008R2;
GO
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;