删除多个索引如果存在一个Drop语句

时间:2015-11-21 04:50:14

标签: sql sql-server-2008 tsql

我想写一个drop语句来删除索引,但我也想使用IF EXISTS检查。

语法来自MSDN

DROP INDEX [ IF EXISTS ] 
{ <drop_relational_or_xml_or_spatial_index> [ ,...n ] 
| <drop_backward_compatible_index> [ ,...n ]
}

我正在尝试运行此drop语句,但根据SQL Server,IF EXISTS附近的语法不正确。

DROP INDEX IF EXISTS idx1 on table1,
idx2 on table2,
idx3 on table2

我知道我可以使用多个语句,如下所示,但我更喜欢MSDN上显示的单个DROP语句。

IF EXISTS (SELECT * FROM sys.indexes WHERE name = 'idx1')
BEGIN
    DROP INDEX idx1 ON table1
END

为什么在按照MSDN上显示的语法时出现语法错误?

1 个答案:

答案 0 :(得分:1)

argument section中明确指出

  

如果EXISTS适用于:SQL Server(SQL Server 2016社区技术   通过当前版本预览3(CTP 3.0)。有条件地放弃了   仅当索引已存在时才开始索引。

您无法在Sql server 2008中使用此语法。 here

中的更多信息