mousau Ответов: 1

Ошибка дублирования записей при создании первичного ключа! !


Всем Привет
У меня есть таблица, в которой записи уникальны, однако они могут присутствовать несколько раз из-за изменений, связанных с их атрибутами. Соответственно у меня есть ProdID и StartDate col, были внесены изменения в цену продуктов.Но при создании этого prodId в качестве первичного ключа SQl Server выдает ошибку!!Тогда как мне решить эту проблему??

Ошибка:-
'EffectiveDate' table
- Unable to create index 'PK_EffectiveDate'.  
The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo.EffectiveDate' and the index name 'PK_EffectiveDate'. The duplicate key value is (PCOS103).
Could not create constraint. See previous errors.
The statement has been terminated.


Что я уже пробовал:

Я все еще не уверен, но тогда как некоторые из подобных таблиц хранятся с определенными записями в качестве первичных ключей в определенных базах данных?Или я что-то упускаю!!

Wendelius

Что такое заявление, которое вы пытаетесь использовать, чтобы создать ограничение целостности?

mousau

Привет Мика
Большое спасибо за ответ.Я не использовал инструкцию create table, у меня уже есть аналогичная таблица, созданная в другой БД, я просто хотел реплицировать ее на свой SQL-сервер, я использовал графический метод создания таблицы, щелкните правой кнопкой мыши-- - >Design. В таких ситуациях целесообразно ли использовать оператор create table (с опцией constraint)???
Тогда позвольте мне попытаться вернуться к этому снова.
Спасибо
С уважением

1 Ответов

Рейтинг:
6

Wendelius

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

Если идея заключается в том, что один ProdID может существовать несколько раз, но не для одного и того же StartDate затем убедитесь, что вы создали ключ, содержащий оба столбца.Оператор SQL может быть чем-то вроде:

ALTER TABLE EffectiveDate ADD PRIMARY KEY (ProdID, StartDate);


mousau

Привет Мика
Одна вещь все еще смущала меня, запись (PCOS103)присутствует дважды, со следующими подробностями:-
PCOS103 NeemFaceWash AyurvedicCosmectics 2 250 2016-02-06
PCOS103 NeemFaceWash AyurvedicCosmectics 2 260 2016-09-18

1)Как вы можете видеть, данные столбца даты не дублируются,тогда почему возникла ошибка?
2)Еще одно сомнение, я пытался сделать оба этих cols: ProdID и StartDate первичными ключами, но графически, а не запросом, и это закончилось ошибками, однако команда работала нормально????Каких-либо причин??

С уважением
Спасибо

Wendelius

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

Взгляните на Составной ключ-Википедия, свободная энциклопедия[^]

mousau

Привет Мика
Большое спасибо за ваши ответы, возможно, большая гибкость в обработке таблиц заключается в командах/кодировках, а не в графическом использовании.
С уважением