Оператор CREATE UNIQUE INDEX завершен, так как обнаружен повторяющийся ключ.

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

Оператор CREATE UNIQUE INDEX прерван, так как для имени объекта "dbo.Route" и имени индекса "PK_Route" был найден повторяющийся ключ. Повторяющееся значение ключа (1).

Но другого ключа нет.

Думаю проблема может быть в том, что изначально у меня было 2 таблицы Route и RouteStation, потом я удаляю таблицу Route и переименовываю RouteStation в Route.

Другие темы на этом сайте мне не помогают. Я также пытался увидеть ключ для этой таблицы, но вывод был пуст:

SELECT Col.Column_Name from 
    INFORMATION_SCHEMA.TABLE_CONSTRAINTS Tab, 
    INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE Col 
WHERE 
    Col.Constraint_Name = Tab.Constraint_Name
    AND Col.Table_Name = Tab.Table_Name
    AND Constraint_Type = 'PRIMARY KEY'
    AND Col.Table_Name = 'Route'

person Roomey    schedule 07.03.2020    source источник
comment
Ваша таблица уже содержит данные?   -  person GMB    schedule 07.03.2020
comment
........ @GMB да   -  person Roomey    schedule 07.03.2020
comment
Вы не можете добавить уникальный индекс для столбца, который не содержит повторяющихся значений.   -  person Jakob Busk Sørensen    schedule 07.03.2020
comment
Плохие привычки, от которых следует избавиться: использование старых СОЕДИНЕНИЯ стилей — старый стиль разделенного запятыми списка таблиц был заменен на правильный синтаксис ANSI JOIN в ANSI-92 Стандарт SQL (более 25 лет назад), и его использование не рекомендуется   -  person marc_s    schedule 07.03.2020
comment
Пожалуйста, используйте текст, а не изображения/ссылки, для текста, включая таблицы и ERD. Используйте изображения только для того, что не может быть выражено в виде текста или для дополнения текста. Это часто задаваемые вопросы. Пожалуйста, прежде чем рассматривать публикацию, прочитайте свой учебник и / или руководство и погуглите любое сообщение об ошибке или множество четких, кратких и точных формулировок вашего вопроса / проблемы / цели, с вашими конкретными строками / именами и тегами site: stackoverflow.com и без них; прочитал много ответов. Если вы публикуете вопрос, используйте одну фразу в качестве заголовка. Отразите свое исследование.   -  person philipxy    schedule 16.07.2020
comment
Пожалуйста, в вопросах кода дайте минимальный воспроизводимый пример - вырезайте, вставляйте и запускайте код, включая наименьший репрезентативный ввод примера как код; желаемый и фактический вывод (включая дословные сообщения об ошибках); теги и версии; четкая спецификация и объяснение. Дайте наименьший код, который вы можете показать, это код, который, как вы показываете, в порядке, расширенный кодом, который, как вы показываете, не в порядке. (Основы отладки.) Для SQL, который включает СУБД и DDL (включая ограничения и индексы) и ввод в виде кода, отформатированного в виде таблицы. Как спросить   -  person philipxy    schedule 16.07.2020


Ответы (1)


Проблема связана с содержимым таблицы route. В сообщении говорится, что у вас есть повторяющиеся значения в столбцах, на которые ссылается ограничение PK_Route — вероятно, RouteId. Вы можете показать их с помощью:

select RouteId from Route group by RouteId having count(*) > 1
person GMB    schedule 07.03.2020