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;
Voir aussi