Déposer une table en SQL facile. Vous utilisez simplement DROP TABLE myTable
où myTable
est le nom de la table que vous souhaitez supprimer. Vous pouvez utiliser cette méthode pour supprimer une table dans SQL Server via un script T-SQL.
Mais vous obtiendrez une erreur si la table n'existe pas réellement. Autrement dit, à moins que vous ne vérifiiez d'abord l'existence de la table.
Vous trouverez ci-dessous quatre façons d'utiliser T-SQL pour vérifier si la table existe avant de la supprimer.
Option 1 :Le IF EXISTS
Article
Lors de l'utilisation de SQL Server 2016 ou version ultérieure, nous pouvons utiliser le IF EXISTS
clause de la DROP TABLE
pour vérifier l'existence de la table avant d'essayer de la supprimer :
DROP TABLE IF EXISTS t1;
Cela supprime une table appelée t1
s'il existe.
Voici le résultat de l'exécution de l'instruction ci-dessus lorsque la table existe (et est donc supprimée) :
Commands completed successfully.
Et voici ce que nous obtenons si nous réexécutons immédiatement l'instruction (c'est-à-dire lorsque la table n'existe pas) :
Commands completed successfully.
Même sortie. Ainsi, l'instruction s'exécute correctement, que la table existe ou non.
Voici ce qui se passe si nous essayons de supprimer la table sans utiliser le IF EXISTS
clause :
DROP TABLE t1;
Résultat :
Msg 3701, Level 11, State 5, Line 1 Cannot drop the table 't1', because it does not exist or you do not have permission.
Option 2 :Vérifier l'ID de l'objet
Nous pouvons alternativement utiliser le OBJECT_ID()
fonction pour vérifier l'existence de la table avant d'essayer de la supprimer :
IF OBJECT_ID(N'dbo.t1', N'U') IS NOT NULL
DROP TABLE dbo.t1;
GO
L'exemple ci-dessus vérifie l'ID d'objet pour un dbo.t1
table. Le deuxième argument de OBJECT_ID()
spécifie le type d'objet que nous recherchons. Dans ce cas, nous utilisons U
, qui est pour "table définie par l'utilisateur".
Le OBJECT_ID()
renvoie le numéro d'identification d'objet de base de données d'un objet de portée schéma. Si l'objet existe, il ne retournera pas NULL, et par conséquent, nous pouvons supprimer la table. Si l'objet ne le fait pas existent, ou si vous n'y avez pas accès, la fonction renvoie NULL, et le DROP TABLE
l'instruction ne s'exécutera pas.
Option 3 :Interroger information_schema.tables
Une autre façon de vérifier si une table existe déjà est d'interroger le information_schema.tables
afficher :
IF EXISTS (
SELECT * FROM information_schema.tables
WHERE table_schema = 'dbo' AND table_name = 't1')
DROP TABLE dbo.t1;
Cela fait une chose similaire à l'exemple précédent; il vérifie l'existence de la table et ne la crée que si elle n'existe pas.
Option 4 :Interroger sys.tables
Nous pouvons également interroger les sys.tables
vue du catalogue système :
IF EXISTS (
SELECT * FROM sys.tables t
JOIN sys.schemas s ON (t.schema_id = s.schema_id)
WHERE s.name = 'dbo' AND t.name = 't1')
DROP TABLE dbo.t1;
SQL Server fournit de nombreuses autres façons de vérifier l'existence de tables. Voir 6 façons de vérifier si une table existe dans SQL Server pour des exemples.