Reiniciando Senhas que foram redirecionadas mais de uma vez

leonardoleonardo Entry Level
edited September 2014 in Suporte
Bom dia a todos!

Aqui no HEMOSE (Hemocentro de Sergipe) temos um processo de atendimento em 4 etapas, faz-se o cadastro que direciona para pré-triagem, esta então direciona para triagem e que, por fim, direciona para coleta, onde é encerrado, de fato o atendimento.

Percebe-se então que sempre haverá o redirecionamento das senhas em até 4 vezes. Qual o problema?

Cannot delete or update a parent row: a foreign key constraint fails
(`novosga`.`atendimentos`, CONSTRAINT `atendimentos_ibfk_6`
FOREIGN KEY (`atendimento_id`) REFERENCES `atendimentos` (`id`))
Ao tentar reiniciar as Senhas dava este erro de constraint, porquê?

Na tabela atendimentos quando há uma referência de uma mesma senha para um segundo atendimento(redirecionado) ele consegue identificar e deletar o segundo antes do primeiro.

Porém, quando há um, no mínimo, um terceiro atendimento desta mesma senha(redirecionada), ele tenta apagar o segundo atendimento, porém este segundo está amarrado ao terceiro. O que dá pau!

Como solucionei:

Novosga\Business\AtendimentoBusiness.php

// limpa atendimentos da unidade
// por causa do auto relacionamento, primeiro apaga os registros filhos
$sql = 'DELETE FROM atendimentos WHERE dt_cheg <= :data AND atendimento_id IS NOT NULL';
if ($unidade > 0) {
$sql .= " AND unidade_id = :unidade";
}
$sql .= " ORDER BY id DESC"; // Aqui para o DELETE ser realizado de forma decrescente
E assim consegui solucionar o problema!

Espero que isto seja de ajuda para os demais!

Comments

This discussion has been closed.