Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como descartar uma tabela se ela existir?


É correto fazer o seguinte?
IF EXISTS(SELECT *
          FROM   dbo.Scores)
  DROP TABLE dbo.Scores

Não. Isso eliminará a tabela apenas se ela contiver alguma linha (e gerará um erro se a tabela não existir).

Em vez disso, para uma tabela permanente, você pode usar
IF OBJECT_ID('dbo.Scores', 'U') IS NOT NULL 
  DROP TABLE dbo.Scores; 

Ou, para uma tabela temporária, você pode usar
IF OBJECT_ID('tempdb.dbo.#TempTableName', 'U') IS NOT NULL
  DROP TABLE #TempTableName; 

O SQL Server 2016+ tem uma maneira melhor, usando DROP TABLE IF EXISTS … . Veja a resposta de @Jovan.