Уникальный индекс SQL Server, позволяющий дублировать

Я использую SQL Server 2008, имел таблицу с идентификатором (числовой) столбец в качестве первичного ключа. Также имел уникальный индекс по трем столбцам varchar. Мне удалось добавить строку с точно таким же набором из трех столбцов. Я проверил это простым запросом значений, и были возвращены 2 строки.

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

Затем я очищаю базу данных от дубликатов, воссоздаю индекс с теми же 3-мя varchars как с уникальными и некластеризованными, и теперь он работает правильно, не допуская дубликатов.

Кто-нибудь знает, почему уникальность этого индекса была проигнорирована?

2 ответа

Индекс мог быть отключен (см. " Отключение индексов"), ваши "повторяющиеся" значения могли быть другими (например, конечные пробелы), или ваш тест может быть неверным.

Наверняка вы не вставили дубликат в принудительный уникальный индекс.

Я не профессионал в этом вопросе, но настройка индекса "уникальна", вероятно, относится к способу построения / хранения индекса, а не к тому, что это ограничение. Это, вероятно, также означает, что производительность индекса ниже оптимальной. При создании индекса СУБД может проверить это.

Другие вопросы по тегам