当我使用" DROP TABLE IF EXISTS"在SSMS第17.1节中

时间:2017-08-04 06:01:29

标签: sql sql-server tsql

我正在使用SQL Server Management Studio的v.17.1版。理论上,查询DROP TABLE IF EXISTS可以在SQL Server 2016中运行。

您可以在Microsoft官方网页上看到:DROP TABLE

但是,当我尝试执行查询时

DROP TABLE IF EXISTS dbo.EmpLocations;

出现错误:

  

关键字' IF'附近的语法不正确。

有什么问题?我使用Microsoft的特定数据库来使用SQL Server 2016 - 2017。

2 个答案:

答案 0 :(得分:5)

为了向后兼容所有版本的sql-server,请使用:

IF OBJECT_ID('dbo.emplocations') IS NOT NULL
    DROP TABLE dbo.emplocations;
GO

答案 1 :(得分:2)

我们有很多方法可以做到这一点,但通常情况并非DROPCREATE实践,您可以使用临时表的物理表

检查实际表的存在和DROP:

IF EXISTS(SELECT 1 FROM sys.objects where name = 'myTable' AND type = 'U')
    DROP TABLE dbo.myTable

IF OBJECT_ID('dbo.myTable', 'U') IS NOT NULL 
    DROP TABLE dbo.myTable;

检查是否存在临时表和DROP:

IF OBJECT_ID('tempdb.dbo.#myTable', 'U') IS NOT NULL
    DROP TABLE #myTable;