DBAtlas · Atlas de operaciones de bases de datos

23505: unique_violation

PostgreSQL

¿Qué significa?

La fila insertada o actualizada viola una restricción UNIQUE o la PRIMARY KEY; el mismo valor ya existe en la tabla.

¿Por qué ocurre?

Volver a insertar con la misma clave única, introducir datos duplicados en una columna única, el valor de la secuencia que se queda atrás por inserciones manuales o dos peticiones concurrentes que insertan la misma clave.

Cómo solucionarlo

El nombre de la restricción y el valor de la clave en el detalle del error muestran qué fila entra en conflicto. Para actualizar la fila existente, use INSERT ... ON CONFLICT (my_column) DO UPDATE o DO NOTHING. Para encontrar duplicados: SELECT my_column, COUNT(*) FROM my_table GROUP BY my_column HAVING COUNT(*) > 1. Si la secuencia se quedó atrás: SELECT setval('seq_name', (SELECT MAX(id) FROM my_table)).

Abrir en DBAtlas →

Más entradas de este motor