<p>Est-il correct de faire ce qui suit ?</p>
<pre><code class="lang-auto">IF EXISTS(SELECT *
FROM dbo.Scores)
DROP TABLE dbo.Scores
</code></pre>
<p><strong>Non.</strong> Cela ne supprimera la table que si elle contient des lignes (et générera une erreur si la table n’existe pas).</p>
<p><strong>À la place, pour une table permanente, vous pouvez utiliser</strong></p>
<pre><code class="lang-auto">IF OBJECT_ID('dbo.Scores', 'U') IS NOT NULL
DROP TABLE dbo.Scores;
</code></pre>
<p><strong>Ou, pour une table temporaire, vous pouvez utiliser</strong></p>
<pre><code class="lang-auto">IF OBJECT_ID('tempdb.dbo.#TempTableName', 'U') IS NOT NULL
DROP TABLE #TempTableName;
</code></pre>
<p>SQL Server 2016+ offre une meilleure façon, en utilisant <code>DROP TABLE IF EXISTS ...</code>. Consultez <a href="https://stackoverflow.com/a/33497857/73226">la réponse de @Jovan</a>.</p>