如果索引不存在,Drop_existing将引发错误

时间:2010-06-23 23:07:44

标签: sql sql-server-2000 indexing

我正在大型数据库上创建/更改大量索引。如果索引已存在,则执行此操作。

CREATE UNIQUE CLUSTERED
INDEX [table1_1] ON [dbo].[table1] ([col1], [col2], [col3])
WITH DROP_EXISTING ON [PRIMARY]

但如果它不存在错误。

所以我将脚本改为:

IF EXISTS (SELECT name FROM sysindexes WHERE name = 'table1_1') DROP INDEX [table1].[table1_1]
CREATE UNIQUE CLUSTERED
INDEX [table1_1] ON [dbo].[table1] ([col1], [col2], [col3])
ON [PRIMARY]

所以问题是我使用WITH DROP_EXIST错了吗?

1 个答案:

答案 0 :(得分:6)

是的,这是DROP_EXISTING的限制,如果索引尚不存在,它确实会失败! (至少在MS SQL 2000和2005上)

参考:http://www.mssqltips.com/tip.asp?tip=1362