Tecnología · GUÍA PRÁCTICA
¿ID generado duplicado en PostgreSQL? Demuestra el desfase antes de setval
Lee la restricción y el valor, identifica quién genera la clave, resuelve la secuencia propietaria y detén escritores antes de una reparación puntual. Una clave de negocio duplicada o una carrera necesita otra solución.

Una clave duplicada prueba que ya existe un valor restringido; no prueba que la secuencia primaria esté mal.
Conserva restricción y valor, identifica el generador y compara tabla y secuencia con los escritores controlados.
Conserva restricción y valor
Guarda error, restricción, DETAIL y forma de la sentencia. Una clave de negocio no se arregla reiniciando IDs.
Registra si se suministró el ID y cambios de importación, seed, restore o failover.
Demuestra el generador
Inspecciona default/identity y usa pg_get_serial_sequence, sin adivinar nombres.
Con clave de aplicación o restricción compuesta, investiga reintentos, idempotencia y datos fuente.
Compara sin avanzar
Compara MAX(id), last_value e is_called; no invoques nextval solo para mirar.
Revisa start, increment, límites, cycle y tabla vacía antes de aplicar fórmulas.
Repara con escritores detenidos
Detén writers en una ventana de mantenimiento; setval es inmediato y no se deshace con rollback.
Repara solo la secuencia demostrada; en tabla vacía usa el start real e is_called=false.
Verifica y cierra la causa
Haz un insert controlado sin ID y confirma clave nueva, fila y dirección de secuencia.
Corrige cargas con ID, replicación o failover; si vuelve, no repitas setval sin hallar al writer.
