如何删除一个已经存在的表?

11 浏览
0 Comments

如何删除一个已经存在的表?

表名是Scores

以下操作是否正确?

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

admin 更改状态以发布 2023年5月20日
0
0 Comments

从SQL Server 2016开始,您可以使用

DROP TABLE IF EXISTS dbo.Scores

参考:DROP IF EXISTS - SQL Server 2016中的新东西

不久将在SQL Azure数据库中实现。

0
0 Comments

这样做是正确的吗?

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 的答案

0