如何删除一个已经存在的表?
如何删除一个已经存在的表?
表名是Scores
。
以下操作是否正确?
IF EXISTS(SELECT * FROM dbo.Scores) DROP TABLE dbo.Scores
admin 更改状态以发布 2023年5月20日
从SQL Server 2016开始,您可以使用
DROP TABLE IF EXISTS dbo.Scores
参考:DROP IF EXISTS - SQL Server 2016中的新东西
不久将在SQL Azure数据库中实现。
这样做是正确的吗?
IF EXISTS(SELECT * FROM dbo.Scores) DROP TABLE dbo.Scores
不是。仅当表中包含任何行时才会删除该表(如果表不存在,则会引发错误)。
相反,对于永久表,可以使用
IF OBJECT_ID('dbo.Scores', 'U') IS NOT NULL DROP TABLE dbo.Scores;
或者,对于临时表,可以使用
IF OBJECT_ID('tempdb.dbo.#TempTableName', 'U') IS NOT NULL DROP TABLE #TempTableName;
SQL Server 2016+ 有一个更好的方法,可以使用 DROP TABLE IF EXISTS …
。参见 @Jovan 的答案。