сервлеты Java: дубликат ключевой строки в объекте с уникальным индексом 'XAK1timItem' - PullRequest
0 голосов
/ 13 мая 2009

Я написал этот Java-сервлет, который вставляет элементы в таблицу, но не работает. Я думаю, что это может быть связано с моей вставкой и удалением, что каким-то образом привело меня в беду. Сервлет Java запускает оператор вставки на сервере SQL. В моем журнале ошибок написано:

com.microsoft.sqlserver.jdbc.sqlserverexception: cannot insert duplicate key row in object 'dbo.timitem' with unique index 'XAK1timitem'. 

есть идеи?

ОБНОВЛЕНИЕ: я обнаружил, что существует индекс под названием «XAK1timItem (уникальный, некластеризованный)», с которым я не совсем уверен, что делать с… надеюсь, это поможет с вопросом.

1 Ответ

1 голос
/ 13 мая 2009

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

Часть AK указывает, что это a l альтернатива k ey, что, вероятно, означает, что таблица имеет регулярный первичный ключ, и ей не нужно полагаться на AK для уникального идентификация строки.

Некоторые опции:

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