Tester et supprimer une vue SQL Server si elle existe (If Exists)

Comment test et ensuite supprimer une vue SQL Server avec une requête T-SQL uniquement si elle existe dans la base? Voici comment tester l’existence d’une une vue SQL Server avant de la supprimer. Utiliser ce script comme un exemple pour tester l’existence de la vue avant de la supprimer.

Supprimer une vue SQL Server si elle existe pour éviter les erreurs avant la suppression

En effet, supprimer une vue inexistante retourne cette erreur dans Management Studio: 

Msg 3701, Level 11, State 5, Line 1

Cannot drop the view ‘dbo.V_VENTES’, because it does not exist or you do not have permission.

Ou le même message d’erreur en Français :

Msg 3701 : La vue n’existe pas ou vous n’avez pas les droits.

Voici la solution, utiliser la fonction SQL Server IF EXISTS pour tester l’existence de la vue avant de la supprimer, comme dans cet exemple:

IF EXISTS ( 
  SELECT 1 
  FROM sys.objects 
  WHERE object_id = object_id(N'[dbo].[V_VENTES]') 
  AND type in (N'V') 
) 
BEGIN DROP VIEW [dbo].[V_VENTES]; 
END;

Script plus court avec une seule ligne de code, la fonction DROP VIEW IF EXISTS est disponible depuis la version SQL Server 2016.

IF EXISITS DROP VIEW [dbo].[V_VENTES];

C’est un exemple de requête de type Langage de Définition de Donnée (dont l’abbréviation est LDD), appelé aussi DDL pour Data Definition Language en Anglais.

Cette page plus générale sur les vues expose quelques exemples des principales requêtes LDD pour gérer les vues en T-SQL.

Soyez le premier à commenter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


*