2015-02-20 3 views
0

Я получаю нарушение уникального ключа, и я не уверен, почему, вот мой сценарий. У меня есть таблица со следующими полями:SQL Unique Key Violation

ID, LocationID, Name, Description, Dewey 

ID, очевидно, является первичным ключом, LocationID внешний ключ связан с Location таблицы и другие поля являются просто varchar поля, не имеющие отношения, связанные с ними.

Когда я вставить строку, где LocationID и Name имеют такое же значение, как другая строка в таблице я получаю эту ошибку:

Violation of UNIQUE KEY constraint 'IX_InternalLocation'. Cannot insert duplicate key in object 'dbo.InternalLocation'. The statement has been terminated.

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

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

+3

Проверьте, что такое определение IX_InternalLocation, или, вернее, разместите здесь полное определение таблицы. –

+0

Возможно, что таблица имеет более одного уникального ключа/индекса, и звучит так, как будто это имеет место здесь. –

+0

? действительно, почему бы вам проголосовать за эти вопросы? – mgrenier

ответ

3

Выполнить этот запрос:

SELECT tc.Constraint_Name, cc.Column_Name 
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS tc 
INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE cc 
    ON tc.CONSTRAINT_NAME = cc.CONSTRAINT_NAME 
WHERE tc.CONSTRAINT_NAME = 'IX_InternalLocation' AND tc.CONSTRAINT_TYPE = 'Unique' 

против вашей базы данных.

Вы должны получить в результате:

Constraint_Name     Column_Name 
----------------------------------------------------- 
IX_InternalLocationDateMexri  LocationID 
IX_InternalLocationYpallhlosId Name 

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

+0

Да, вы правы! Эта таблица была создана кем-то другим, и это ограничение было добавлено. Что касается изменений в системе, это теперь нужно удалить. Спасибо за вашу помощь! – mgrenier

Смежные вопросы