Уникальный индекс SQL Server, позволяющий дублировать
Я использую SQL Server 2008, имел таблицу с идентификатором (числовой) столбец в качестве первичного ключа. Также имел уникальный индекс по трем столбцам varchar. Мне удалось добавить строку с точно таким же набором из трех столбцов. Я проверил это простым запросом значений, и были возвращены 2 строки.
Я отредактировал индекс и добавил столбец id. Когда я попытался отредактировать его снова и удалить столбец id, он пожаловался на наличие дублирующихся строк, удалил индекс, но не смог его создать.
Затем я очищаю базу данных от дубликатов, воссоздаю индекс с теми же 3-мя varchars как с уникальными и некластеризованными, и теперь он работает правильно, не допуская дубликатов.
Кто-нибудь знает, почему уникальность этого индекса была проигнорирована?
2 ответа
Индекс мог быть отключен (см. " Отключение индексов"), ваши "повторяющиеся" значения могли быть другими (например, конечные пробелы), или ваш тест может быть неверным.
Наверняка вы не вставили дубликат в принудительный уникальный индекс.
Я не профессионал в этом вопросе, но настройка индекса "уникальна", вероятно, относится к способу построения / хранения индекса, а не к тому, что это ограничение. Это, вероятно, также означает, что производительность индекса ниже оптимальной. При создании индекса СУБД может проверить это.