2627: Нарушение ограничения PRIMARY KEY / UNIQUE KEY. Невозможно вставить дублирующийся ключ в объект
SQL ServerЧто это значит?
Вы попытались вставить или обновить значение, которое уже существует в столбце (столбцах), защищённых ограничением PRIMARY KEY или UNIQUE. Дублирующиеся ключи не допускаются.
Почему возникает?
Повторная вставка того же уникального значения, UPDATE, конфликтующий с существующим значением, отсутствие проверки уникальности или два параллельных запроса, создающих одну и ту же строку.
Как исправить
Перед вставкой проверьте, существует ли строка, или используйте MERGE / IF NOT EXISTS. Для идемпотентных вставок применяйте шаблон «INSERT ... WHERE NOT EXISTS». Перехватывайте ошибку и возвращайте осмысленное сообщение. Если дублирующиеся данные действительно нужны, пересмотрите ограничение. Используйте IDENTITY или SEQUENCE, чтобы избежать коллизий при генерации ключей.
Ещё по этой СУБД
- 1205Транзакция (Process ID) оказалась во взаимоблокировке с другим процессом за ресурсы блокировки и выбрана жертвой взаимоблокировки
- 2601Невозможно вставить строку с дублирующимся ключом в объект с уникальным индексом. Дублирующееся значение ключа: ...
- 547Оператор INSERT/UPDATE/DELETE конфликтует с ограничением FOREIGN KEY / CHECK
- 18456Ошибка входа для пользователя (Login failed)
- 8152Строковые или двоичные данные были бы усечены