23P01: exclusion_violation
PostgreSQLO 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.