Czy prawidłowe jest wykonanie następujących czynności?
IF EXISTS(SELECT *
FROM dbo.Scores)
DROP TABLE dbo.Scores
Nie. Spowoduje to usunięcie tabeli tylko wtedy, gdy zawiera ona jakiekolwiek wiersze (i zgłosi błąd, jeśli tabela nie istnieje).
Zamiast tego możesz użyć stałego stołu
IF OBJECT_ID('dbo.Scores', 'U') IS NOT NULL
DROP TABLE dbo.Scores;
Lub dla tabeli tymczasowej, której możesz użyć
IF OBJECT_ID('tempdb.dbo.#TempTableName', 'U') IS NOT NULL
DROP TABLE #TempTableName;
SQL Server 2016+ ma lepszy sposób, używając DROP TABLE IF EXISTS …
. Zobacz odpowiedź @Jovan.