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

23505: unique_violation

PostgreSQL

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

Вставленная или обновлённая строка нарушает ограничение UNIQUE или PRIMARY KEY; такое значение уже существует в таблице.

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

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

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

Имя ограничения и значение ключа в деталях ошибки показывают, какая строка конфликтует. Чтобы обновить существующую строку, используйте INSERT ... ON CONFLICT (my_column) DO UPDATE или DO NOTHING. Поиск дубликатов: SELECT my_column, COUNT(*) FROM my_table GROUP BY my_column HAVING COUNT(*) > 1. Если последовательность отстала: SELECT setval('seq_name', (SELECT MAX(id) FROM my_table)).

Открыть в DBAtlas →

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