Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come eliminare una tabella se esiste?

È corretto fare quanto segue?

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

No. Ciò rilascerà la tabella solo se contiene righe (e genererà un errore se la tabella non esiste).

Invece, per un tavolo permanente puoi utilizzare

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

Oppure, per un tavolo temporaneo puoi utilizzare

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

SQL Server 2016+ ha un modo migliore, usando DROP TABLE IF EXISTS … . Vedi la risposta di @Jovan.