DBAtlas · Атлас эксплуатации баз данных

2627: Нарушение ограничения PRIMARY KEY / UNIQUE KEY. Невозможно вставить дублирующийся ключ в объект

SQL Server

Что это значит?

Вы попытались вставить или обновить значение, которое уже существует в столбце (столбцах), защищённых ограничением PRIMARY KEY или UNIQUE. Дублирующиеся ключи не допускаются.

Почему возникает?

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

Как исправить

Перед вставкой проверьте, существует ли строка, или используйте MERGE / IF NOT EXISTS. Для идемпотентных вставок применяйте шаблон «INSERT ... WHERE NOT EXISTS». Перехватывайте ошибку и возвращайте осмысленное сообщение. Если дублирующиеся данные действительно нужны, пересмотрите ограничение. Используйте IDENTITY или SEQUENCE, чтобы избежать коллизий при генерации ключей.

Открыть в DBAtlas →

Ещё по этой СУБД