DBAtlas · Atlas de operaciones de bases de datos

23P01: exclusion_violation

PostgreSQL

¿Qué significa?

Se infringió una restricción EXCLUDE (de exclusión). Este tipo de restricción impide que dos filas entren en conflicto según operadores concretos (p. ej., solapamiento de rangos &&); la fila insertada/actualizada se rechazó porque entra en conflicto con una fila existente.

¿Por qué ocurre?

Normalmente hay definida una restricción EXCLUDE basada en GiST (p. ej., que prohíbe solapamientos temporales con tstzrange && en reservas de citas/salas) y la nueva fila tiene un rango/valor que se solapa con una fila existente. También puede ocurrir cuando dos transacciones concurrentes insertan rangos solapados.

Cómo solucionarlo

Compruebe el solapamiento con una consulta antes de insertar, o capture el error en la aplicación y muestre al usuario un mensaje significativo. Consulte el rango/condición correspondiente para encontrar la fila existente en conflicto. Si la regla de negocio permite solapamientos, relaje la restricción; en caso contrario, corrija la entrada. En situaciones de concurrencia, reintente la transacción de forma segura para serializarla.

Abrir en DBAtlas →

Más entradas de este motor