DBAtlas · Atlas de operações de banco de dados

23505: unique_violation

PostgreSQL

O que significa?

A linha inserida ou atualizada viola uma constraint UNIQUE ou a PRIMARY KEY; o mesmo valor já existe na tabela.

Por que acontece?

Reinserção com a mesma chave única, entrada de dados duplicados em uma coluna única, o valor da sequence ficando para trás por causa de inserts manuais, ou duas requisições concorrentes inserindo a mesma chave.

Como resolver

O nome da constraint e o valor da chave no detalhe do erro mostram qual linha está em conflito. Para atualizar a linha existente, use INSERT ... ON CONFLICT (my_column) DO UPDATE ou DO NOTHING. Para encontrar duplicatas: SELECT my_column, COUNT(*) FROM my_table GROUP BY my_column HAVING COUNT(*) > 1. Se a sequence ficou para trás: SELECT setval('seq_name', (SELECT MAX(id) FROM my_table)).

Abrir no DBAtlas →

Mais entradas deste banco