Повторяющееся значение не может быть вставлено в уникальный индекс

Вопрос, на который можно ответить самостоятельно:

Если у вас есть таблица, в которой вы удалили и повторно добавили контент, вы можете получить эту ошибку при вставке новых строк с идентификатором, равным существующим идентификаторам:

Server Error in '/' Application.

A duplicate value cannot be inserted into a unique index. [ Table name = Stories,Constraint name = PK__Stories__000000000000001C ]

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Data.SqlServerCe.SqlCeException: A duplicate value cannot be inserted into a unique index. [ Table name = Stories,Constraint name = PK__Stories__000000000000001C ]

Source Error:     

Line 57: 
Line 58:         Public Sub Save() Implements IStoryRepository.Save
Line 59:             context.SaveChanges()
Line 60:         End Sub

SQL Server CE пытается вставить строки с идентификатором (в данном случае storyid), равным существующим строкам.

Решение лежит здесь:

http://msdn.microsoft.com/en-us/library/aa237859(v=sql.80).aspx

Это выглядит так: ALTER TABLE Stories ALTER COLUMN storyid IDENTITY (200, 1)

Это означает, что вы изменяете столбец идентификаторов вашей таблицы (Stories) (в данном случае storyid) и устанавливаете его так, чтобы он начинался с большего числа, чем в настоящее время находятся строки. Например, если моя строка с самым большим идентификатором истории равна 170, я мог бы заполнить ее следующим образом:

ALTER TABLE Stories ALTER COLUMN storyid IDENTITY (171, 1)

Следующая вставка будет иметь идентификатор истории 171, а затем она будет автоматически увеличиваться.

Карл


person Malartre    schedule 08.06.2011    source источник
comment
Какой у вас вопрос? Когда вы это получили? Какой ваш код вызвал это?   -  person Devin Burke    schedule 08.06.2011
comment
Похоже, вы его не удалили...   -  person some    schedule 08.06.2011
comment
Извините, ребята, я пытался добавить вопрос, на который сам ответил, и stackoverflow сообщил мне after, что у меня недостаточно баллов для этого.   -  person Malartre    schedule 08.06.2011