Comment vérifier si une table existe dans SQL Server ?
Il y a plusieurs façon plus ou moins élégantes. Tout d'abord, il y a la possibilité d'utiliser les tables systèmes comme la table sys.tables :
IF EXISTS(SELECT * FROM sys.Tables where name = 'Matable')
BEGIN
…
END
Attention, il peut exister plusieurs tables avec un même nom dans des schémas différents, il faut donc faire une jointure avec sys.schemas pour affiner sa recherche et donc remplacer la requête par :
SELECT t.name FROM sys.Tables T INNER JOIN sys.Schemas ON T.Schema_Id = S.Schema_Id WHERE s.name='MonSchema' AND t.name='MaTable'
Une autre écriture bien plus courte consiste à utiliser la fonction OBJECT_ID().
IF OBJECT_ID('MonSchema.MaTable’) IS NOT NULL
BEGIN
…
END
La synthaxe est approximative mais cela devrait fonctionner.