1
resposta

[Dúvida] Resolução da Atividade (excluir funcionarios demitidos)

N!ao compreendi por qual razão nao funciona utilizar o EXISTS tal como no exemplo da aula anterior.

delete from
tab_funcionario FC where
exists (select 1 from tab_rh_demitidos dem where dem.cod_funcionario = fc.cod_funcionario)
1 resposta

Oi, Gustavo! Como vai?

É possível, sim, utilizar o EXISTS para solucionar o exercício. Porém, é importante excluir, primeiro, os registros de dependentes - caso contrário, teremos uma restrição de chave primária violada, afinal TAB_DEPENDENTE é vinculada diretamente à TAB_FUNCIONARIO, por meio do COD_FUNCIONARIO.

Tente executar primeiro esse comando:

DELETE FROM TAB_DEPENDENTE TD
WHERE EXISTS (
    SELECT 1
    FROM TAB_RH_DEMITIDOS D
    WHERE D.COD_FUNCIONARIO = TD.COD_FUNCIONARIO
);

E então:

DELETE FROM TAB_FUNCIONARIO TF
WHERE EXISTS (
    SELECT 1
    FROM TAB_RH_DEMITIDOS D
    WHERE D.COD_FUNCIONARIO = TF.COD_FUNCIONARIO
);

Deve funcionar normalmente.

Se tiver mais alguma dúvida, fico à disposição. Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software