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

23P01: exclusion_violation

PostgreSQL

O que significa?

Uma constraint EXCLUDE (de exclusão) foi violada. Esse tipo de constraint impede que duas linhas entrem em conflito segundo operadores específicos (por exemplo, sobreposição de intervalos &&); a linha inserida/atualizada foi rejeitada porque conflita com uma linha existente.

Por que acontece?

Normalmente há uma constraint EXCLUDE baseada em GiST definida (por exemplo, proibindo sobreposição de horários com tstzrange && em agendamentos/reservas de salas) e a nova linha tem um intervalo/valor que se sobrepõe a uma linha existente. Também pode ocorrer quando duas transações concorrentes inserem intervalos sobrepostos.

Como resolver

Verifique a sobreposição com uma consulta antes de inserir, ou capture o erro na aplicação e mostre ao usuário uma mensagem significativa. Consulte o intervalo/condição correspondente para encontrar a linha existente em conflito. Se a regra de negócio permitir sobreposições, flexibilize a constraint; caso contrário, corrija a entrada. Sob concorrência, repita a transação com segurança para serializá-la.

Abrir no DBAtlas →

Mais entradas deste banco