我想写一个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上显示的语法时出现语法错误?
答案 0 :(得分:1)
在argument section中明确指出
如果EXISTS适用于:SQL Server(SQL Server 2016社区技术 通过当前版本预览3(CTP 3.0)。有条件地放弃了 仅当索引已存在时才开始索引。
您无法在Sql server 2008
中使用此语法。 here