Comment utiliser DROP IF EXISTS dans SQL Server?



Essayez Notre Instrument Pour Éliminer Les Problèmes

Cet article traite de la 'DROP IF EXISTS' instruction disponible dans SQL Server 2016 et versions ultérieures. 'SI QUITTE' est la dernière clause facultative ajoutée dans l'instruction DROP existante dans SQL Server 2016 et versions ultérieures. Essentiellement, le 'DROP IF EXISTS' L'option est utilisée lorsqu'il est nécessaire de vérifier si une entité reste dans une base de données avant qu'elle ne soit créée ou supprimée. Dans ce cas, nous allons d'abord supprimer l'objet de base de données existant, puis le recréer avec des modifications si nécessaire.



Ainsi, il empêche l’ancienne façon d’écrire la condition if et, à l’intérieur de la condition if, l’écriture d’une instruction pour tester la présence de l’objet pour le supprimer. Si cela ne se produit pas, l'instruction suivante du lot continuera à être exécutée. Mais si nous essayons de supprimer un objet qui n'existe pas, un message d'erreur s'affiche comme indiqué ci-dessous.



Exécutez la requête suivante.



déposer la table dbo.company

La sortie sera comme ça.

L'erreur survient lors de la suppression de l'objet de base de données qui n'existe pas

Syntaxe

'DROP object_type [IF EXISTS] object_name'

Arguments

TYPE D'OBJET:



Le type d'objet peut être n'importe qui de la base de données, déclencheur, assemblage, séquence, index, table, vue de procédure, fonction, etc.

SI EXISTE:

C'est une clause facultative et si elle est mentionnée dans l'instruction DROP, elle vérifiera l'existence de l'objet, si elle existe, elle tombera, sinon elle continuera d'exécuter l'instruction suivante dans le bloc sans produire d'erreurs.

Maintenant, avec l'introduction de la nouvelle méthode «DROP IF EXISTS» dans SQL Server 2016, les développeurs peuvent écrire du code bref.

Tout d'abord, créez une base de données nommée «appuals».

Créer une base de données

Maintenant, nous allons créer une table à supprimer en exécutant le code suivant.

use [appuals] Go CREATE TABLE temp (id INT, nom varchar (100)); ALLER

La sortie sera la suivante.

Création de table

En outre, créez une procédure de stockage à supprimer à l'aide du code suivant.

UTILISER [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO Créer PROCEDURE [dbo]. [Sp_temp] AS BEGIN SET NOCOUNT ON; SELECT * à partir de dbo.temp; FIN

La sortie sera comme ci-dessous.

Création de procédure de magasin

Ancienne méthode: avant SQL Server en utilisant drop if exits sur les objets de base de données

L'utilisation de la méthode DROP IF EXISTS avant SQL Server 2016 nécessitait l'écriture de code de wrappers d'instructions IF longs.

Supprimer la table si elle existe

La méthode précédente de suppression d'une table est la suivante.

Si nous utilisons SQL Server 2015 ou une version antérieure, nous devons exécuter le groupe de code suivant.

Si (OBJECT_ID ('dbo.temp') n'est pas nul) Drop Table temp

La sortie sera la suivante.

Laisser tomber la table

Maintenant, sa syntaxe est assez déroutante, donc si vous ne l'aimez pas et que vous utilisez SQL Server 2016 ou supérieur, vous pouvez opter pour une simple instruction DROP IF EXIST au lieu de gros wrappers.

Procédure de suppression du magasin si elle existe:

Pour supprimer la procédure, nous devons écrire une instruction conditionnelle pour vérifier si la procédure de stockage existe ou non, puis écrire l'instruction drop. Sinon, cela générera une erreur au cas où la procédure stockée n'existe pas.

Exécutez maintenant les instructions suivantes pour supprimer la procédure dans les versions inférieures à SQL Server 2016.

IF EXISTS (SELECT 1 FROM sys.procedures WHERE Name = 'sp_temp') DROP PROCEDURE dbo.sp_temp

La sortie sera comme ça.

Procédure de suppression à l'aide de l'ancienne méthode de code if wrapper

Supprimer la base de données si elle existe:

Si vous utilisez des versions précédentes de SQL Server, vous devez exécuter le code suivant pour supprimer la base de données.

SI DB_ID ('appuals') N'EST PAS NULL BEGIN DROP DATABASE appuals END

La sortie sera la suivante.

Supprimer la base de données en utilisant une ancienne méthode

Nouvelle méthode: DROP IF EXISTS pris en charge dans SQL Server 2016 et version supérieure

Pour supprimer un objet de base de données dans SQL Server 2016 et supérieur, nous devons exécuter une instruction simple.

Supprimer la table si elle existe:

Nous pouvons écrire une instruction comme ci-dessous dans SQL Server 2016 pour supprimer une table stockée si elle existe.

DROP TABLE IF EXISTS dbo.temp

La sortie sera comme ça.

Supprimer la table en utilisant la nouvelle méthode

Procédure de suppression si elle existe:

Nous allons maintenant supprimer la procédure stockée que nous avons créée au début de l'article en exécutant le code suivant.

DROP PROCEDURE IF EXISTS dbo.sp_temp

La sortie sera comme ci-dessous.

Supprimer la table en utilisant la nouvelle méthode

En ce qui concerne la syntaxe, cette simple déclaration est facile à comprendre et à retenir. De même, nous pouvons suivre la même procédure pour supprimer d'autres objets de base de données.

Supprimer la base de données si elle existe:

Exécutez le code suivant si vous souhaitez supprimer la base de données en utilisant la vérification de l'existence

UTILISER MASTER GO DROP DATABASE IF EXISTS appuals

La sortie sera comme ci-dessous.

Supprimez la base de données en utilisant la nouvelle méthode

L’avantage de l’utilisation de cette méthode est que si la base de données n’existe pas, elle ne provoquera aucune erreur, l’instruction suivante du lot continuera à être exécutée. Essayons de supprimer à nouveau la base de données déjà supprimée.

L'erreur se produit lors de la suppression de la base de données déjà supprimée.

De même, nous pouvons supprimer des index, des vues, des séquences, des assemblages, etc. de la base de données.

3 minutes de lecture