Удаление глобальной временной таблицы не удаляет ее индекс - PullRequest
2 голосов
/ 15 октября 2019

Краткое описание проблемы:

Я создал глобальную временную таблицу, а затем создал кластерный индекс (добавил кластеризованное ограничение первичного ключа) для таблицы. Я удалил таблицу, предполагая, что она также удалит индекс. Затем я воссоздал таблицу с тем же именем без проблем. Затем, когда я пытался воссоздать тот же индекс с тем же именем, я получаю сообщение об ошибке:

The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo.##MyTempTable' and the index name 'PK_TempSampleID'.

Детали проблемы:

Мне нужно создать глобальную временную таблицу и загрузить в нее записитаблица в определенном порядке, используя:

SELECT FROM SomeTable INTO ##MyTempTable WHERE SomeCondition

ORDER BY не выполняет эту работу, поэтому я создал кластеризованный индекс (кластеризованное ограничение первичного ключа). Это помогло, и мои записи были упорядочены по соответствующему полю.

Однако я столкнулся с другой проблемой: я бросил таблицу и воссоздал ее без проблем, но при попытке воссоздания индекса я получил вышеупомянутую ошибку.

Я попытался удалить индекс, используя:

DROP INDEX PK_TempSampleID ON ##MyTempTable

И я получил это сообщение об ошибке:

Cannot drop the index '##TempFormattedSnapshot.PK_TempSampleID', because it does not exist or you do not have permission.

Я исследовал сообщения на этом и других форумах, и все кажетсясообщить, что при удалении временной таблицы индекс этой таблицы также удаляется. Мой опыт показывает мне иначе.

1 Ответ

2 голосов
/ 15 октября 2019

Сообщение об ошибке

Оператор CREATE UNIQUE INDEX завершился, поскольку был найден дубликат ключа для имени объекта 'dbo. ## MyTempTable' и имени индекса 'PK_TempSampleID'.

означает, что в столбцах столбцов есть повторяющиеся значения, для которых вы пытаетесь создать уникальный индекс. Другими словами, не все значения уникальны.

Это не имеет ничего общего с ранее существовавшим индексом с тем же именем.

При удалении таблицы все индексы в этой таблице удаляются. а также.


У вас есть другая проблема, которая выходит за рамки этого вопроса. Вы сказали «загружать записи в эту таблицу в определенном порядке». Вам лучше задать еще один вопрос, объясняющий, чего вы пытаетесь достичь, потому что не существует такой вещи, как «вставка строк в таблицу в определенном порядке». Единственное, что вы можете сделать, это сгенерировать IDENTITY значений в определенном порядке при вставке строк.

В любом случае, вопрос не в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...