Bitte beachten Sie die nachstehenden Ansätze,
Ansatz 1: Verwendung der Ansicht INFORMATION_SCHEMA.TABLES
Wir können eine Abfrage wie unten schreiben, um zu prüfen, ob eine Tabelle Kunden in der aktuellen Datenbank vorhanden ist.
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N'Customers')
BEGIN
PRINT 'Table Exists'
END
Ansatz 2: Verwendung der Funktion OBJECT_ID()
Wir können die Funktion OBJECT_ID() wie folgt verwenden, um zu prüfen, ob in der aktuellen Datenbank eine Kundentabelle existiert.
IF OBJECT_ID(N'dbo.Customers', N'U') IS NOT NULL
BEGIN
PRINT 'Table Exists'
END
Ansatz 3: Verwendung der sys.Objects-Katalogansicht
Wir können die Sys.Objects-Katalogansicht verwenden, um das Vorhandensein der Tabelle zu überprüfen (siehe unten):
IF EXISTS(SELECT 1 FROM sys.Objects WHERE Object_id = OBJECT_ID(N'dbo.Customers') AND Type = N'U')
BEGIN
PRINT 'Table Exists'
END
Ansatz 4: Verwendung der sys.Tables-Katalogansicht
Wir können die Katalogansicht Sys.Tables verwenden, um das Vorhandensein der Tabelle zu überprüfen (siehe unten):
IF EXISTS(SELECT 1 FROM sys.Tables WHERE Name = N'Customers' AND Type = N'U')
BEGIN
PRINT 'Table Exists'
END
Ansatz 5: Vermeiden Sie die Verwendung von sys.sysobjects Systemtabelle
Wir sollten es vermeiden, sys.sysobjects System Table direkt zu verwenden, da der direkte Zugriff darauf in einigen zukünftigen Versionen von Sql Server veraltet sein wird. Laut Microsoft BOL-Link schlägt Microsoft vor, die Katalogansichten sys.objects/sys.tables anstelle der sys.sysobjects-Systemtabelle direkt zu verwenden.
IF EXISTS(SELECT name FROM sys.sysobjects WHERE Name = N'Customers' AND xtype = N'U')
BEGIN
PRINT 'Table Exists'
END
verwiesen von: http://sqlhints.com/2014/04/13/how-to-check-if-a-table-exists-in-sql-server/
2 Stimmen
Warum ist es am besten, INFORMATION_SCHEMA.TABLES anstelle von sys.tables zu verwenden und dann nach dem Namen zu filtern und vielleicht eine type_desc-Wertprüfung hinzuzufügen?