表名为Scores。

执行以下操作是否正确?

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

当前回答

IF EXISTS (SELECT NAME FROM SYS.OBJECTS WHERE object_id = OBJECT_ID(N'Scores') AND TYPE in (N'U'))
    DROP TABLE Scores
GO

其他回答

从SQL Server 2016,您可以使用

DROP TABLE IF EXISTS dbo.Scores

参考:DROP IF EXISTS-SQL Server 2016中的新事物

它将很快出现在SQL Azure数据库中。

如果您使用长代码,并且希望为临时表编写更少的代码,请创建以下过程:

CREATE PROCEDURE MF_DROP (@TEMP AS VARCHAR(100)) AS
    EXEC('IF OBJECT_ID(''TEMPDB.DBO.' + @TEMP + ''', ''U'') IS NOT NULL DROP TABLE ' + @TEMP)

执行中:

EXEC MF_DROP #A
CREATE TABLE #A (I INT) ....

如果您正在使用visual Studio,只需从菜单栏打开,

查看->SQL Server对象资源管理器

它应该像这里所示那样打开

选择并右键单击要删除的表,然后删除。应显示这样的屏幕。单击更新数据库以确认。

此方法非常安全,因为它会向您提供反馈,并会警告删除的表与其他表之间的任何关系。

IF EXISTS (SELECT NAME FROM SYS.OBJECTS WHERE object_id = OBJECT_ID(N'Scores') AND TYPE in (N'U'))
    DROP TABLE Scores
GO

我希望这有助于:

begin try drop table #tempTable end try
begin catch end catch