Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie lösche ich eine Tabelle, wenn sie existiert?

Ist es richtig, Folgendes zu tun?

IF EXISTS(SELECT *
          FROM   dbo.Scores)
  DROP TABLE dbo.Scores

Nein. Dadurch wird die Tabelle nur gelöscht, wenn sie Zeilen enthält (und es wird ein Fehler ausgegeben, wenn die Tabelle nicht existiert).

Stattdessen können Sie für einen festen Tisch verwenden

IF OBJECT_ID('dbo.Scores', 'U') IS NOT NULL 
  DROP TABLE dbo.Scores; 

Oder für eine temporäre Tabelle, die Sie verwenden können

IF OBJECT_ID('tempdb.dbo.#TempTableName', 'U') IS NOT NULL
  DROP TABLE #TempTableName; 

SQL Server 2016+ hat einen besseren Weg, indem er DROP TABLE IF EXISTS … verwendet . Siehe die Antwort von @Jovan.