Drop_existing выдает ошибку, если индекс не существует - PullRequest
5 голосов
/ 24 июня 2010

Я создаю / меняю тонну индексов на большой базе данных.Это работает, если индекс уже существует.

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_EXISTING?

1 Ответ

6 голосов
/ 24 июня 2010

Да, это ограничение DROP_EXISTING, оно завершится ошибкой, если индекс еще не существует! (По крайней мере, в MS SQL 2000 и 2005)

Ссылка: http://www.mssqltips.com/tip.asp?tip=1362

...