SqlHints.com

Plusieurs fois, nous rencontrons un scénario dans lequel nous devons exécuter du code en fonction de l’existence ou non d’une table. Il existe différentes façons d’identifier l’existence d’une table dans Sql Server, dans cet article énumérera les différentes approches couramment utilisées et ses avantages et inconvénients. Je préfère utiliser la fonction OBJECT_ID() car elle est facile à retenir. Faites-moi savoir quelle approche vous utilisez et pourquoi.

Pour démontrer ces différentes approches, nous créons un exemple de base de données avec une table par le script ci-dessous:

CREATE DATABASE SqlHintsDemoDBGOUSE SqlHintsDemoDBGOCREATE TABLE dbo.Customers (CustId INT, Name NVARCHAR(50))

Comment vérifier si une table temporaire existe dans Sql Server?

Approche 1: Utilisation du SYSTÈME d’INFORMATION.Vue TABLES

Nous pouvons écrire une requête comme ci-dessous pour vérifier si une table Customers existe dans la base de données actuelle.

IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'Customers')BEGIN PRINT 'Table Exists'END

RÉSULTAT:
Vérifiez l'existence de la table À l'aide de la vue INFORMATION_SCHEMA

La requête ci-dessus vérifie l’existence de la table Customers sur tous les schémas de la base de données actuelle. Au lieu de cela, si vous souhaitez vérifier l’existence de la Table dans un Schéma spécifié et la Base de données spécifiée, nous pouvons écrire la requête ci-dessus comme suit:

IF EXISTS (SELECT * FROM SqlHintsDemoDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = N'dbo' AND TABLE_NAME = N'Customers')BEGIN PRINT 'Table Exists'END

RÉSULTAT:
Vérifiez l'existence de la table en utilisant INFORMATION_SCHEMA.Tableaux view1

Avantages de cette approche: Les vues INFORMATION_SCHEMA sont portables sur différents systèmes de SGBDR, donc le portage sur différents SGBDR ne nécessite aucune modification.

Comment vérifier si une procédure stockée existe dans Sql Server

Approche 2: En utilisant la fonction OBJECT_ID()

Nous pouvons utiliser la fonction OBJECT_ID() comme ci-dessous pour vérifier si une table Customers existe dans la base de données actuelle.

IF OBJECT_ID(N'dbo.Customers', N'U') IS NOT NULLBEGIN PRINT 'Table Exists'END

RÉSULTAT:
Vérifiez l'existence de la Table À l'aide de la Fonction OBJECT_ID()

La spécification du Nom de la base de données et du Nom du schéma pour le Nom de la Table est facultative. Mais la spécification du nom de la base de données et du nom du schéma fournit une option pour vérifier l’existence de la table dans la base de données spécifiée et dans un schéma spécifié, au lieu de vérifier la base de données actuelle sur tous les schémas. La requête ci-dessous montre que même si la base de données actuelle est une base de données MAÎTRE, nous pouvons vérifier l’existence de la table Customers dans le schéma dbo dans la base de données SqlHintsDemoDB.

USE MASTERGOIF OBJECT_ID(N'SqlHintsDemoDB.dbo.Customers', N'U') IS NOT NULLBEGIN PRINT 'Table Exists'END

RÉSULTAT:
Vérifiez l'Existence de la Table À l'aide de la fonction OBJECT_ID()1

Avantages: Facile à retenir. Un autre point notable à mentionner à propos de la fonction OBJECT_ID() est: elle fournit une option pour vérifier l’existence de la table temporaire créée dans le contexte de connexion actuel. Toutes les autres approches vérifient l’existence de la table temporaire créée dans tous les contextes de connexions au lieu du contexte de connexion actuel. La requête ci-dessous montre comment vérifier l’existence d’une table temporaire en utilisant la fonction OBJECT_ID():

CREATE TABLE #TempTable(ID INT)GOIF OBJECT_ID(N'TempDB.dbo.#TempTable', N'U') IS NOT NULLBEGIN PRINT 'Table Exists'ENDGO

RÉSULTAT:
Vérifier l'existence d'une Table temporaire en utilisant OBJECT_ID() Function1

Comment vérifier si une base de données existe dans Sql Server

Approche 3: En utilisant sys.Vue du catalogue d’objets

Nous pouvons utiliser le système.Vue du catalogue d’objets pour vérifier l’existence de la Table comme indiqué ci-dessous:

IF EXISTS(SELECT 1 FROM sys.Objects WHERE Object_id = OBJECT_ID(N'dbo.Customers') AND Type = N'U')BEGIN PRINT 'Table Exists'END

RÉSULTAT
Vérifiez l'existence de la table à l'aide de Sys.Vue des objets

Comment vérifier si un enregistrement existe dans une table

Approche 4: Utilisation de sys.Vue Catalogue des tables

Nous pouvons utiliser le système.Vue du catalogue des tables pour vérifier l’existence de la Table comme indiqué ci-dessous:

IF EXISTS(SELECT 1 FROM sys.Tables WHERE Name = N'Customers' AND Type = N'U')BEGIN PRINT 'Table Exists'END

RÉSULTAT
Vérifiez l'existence de la Table à l'aide de Sys.Tableau Vue catalogue

Sys.La vue catalogue des tables hérite des lignes du système.Vue catalogue d’objets, Sys.la vue de catalogue d’objets est appelée vue de base où comme sys.Tables est appelée vue dérivée. Sys.Les tables renverront les lignes uniquement pour les objets Table alors que Sys.Vue d’objet en plus de renvoyer les lignes pour les objets de table, il renvoie des lignes pour les objets tels que: procédure stockée, vues, etc.

Comment vérifier si une VUE existe dans Sql Server

Approche 5: Évitez d’utiliser sys.sysobjects Table système

Nous devons éviter d’utiliser sys.table système sysobjects directement, son accès direct sera obsolète dans certaines futures versions de Sql Server. Selon le lien Microsoft BOL, Microsoft suggère d’utiliser le système de vues de catalogue.objets / sys.tables au lieu de sys.table système sysobjects directement.

IF EXISTS(SELECT name FROM sys.sysobjects WHERE Name = N'Customers' AND xtype = N'U')BEGIN PRINT 'Table Exists'END

RÉSULTAT:
Vérifiez L'Existence De La Table À L'Aide De Sys.sysobjects Table Système

:
Comment vérifier si une base de données existe
Comment vérifier si une Procédure stockée existe dans Sql Server
Comment vérifier si une Vue existe
Comment vérifier si une table temporaire existe
Comment vérifier si un enregistrement existe dans la table

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *