Duvida sobre excluir objeto

2 respostas
Dayson_Rodrigues

Bom, tenho uma tabela Funcionario que é Chave estrangeira de 2 Tabelas, Agendamento e Serviço. Utilizo o nome dos funcionários no combobox até ai OK. Estou tentando excluir um funcionário que ele possui vários agendamentos e serviços com nome dele, como faço para excluir ele direto e automaticamente excluir informações que esteja atrelado entre ele?

*preciso colocar algo em minha anotação @ManyToOne?
@ManyToOne @JoinColumn(name ="codigo_funcionario") private Funcionario funcionario;

2 Respostas

R

Olá,

  • Recomendo criar uma opção de inativar o funcionário, mantendo todos os registros de agendamentos e serviços armazenados, já que um funcionário[foreign key] precisa agendar algo para um cliente[foreign key], sendo assim, se este funcionário tiver efetuado algum agendamento para amanhã e vc excluir todos os agendamentos associados a este funcionário, perderá estes registros, se vc tiver o controle de todos os agendamentos e/ou serviços efetuados ao cliente, é necessário manter o registro para saber quem efetuou tal serviço, e mais, se vc excluir um registro do valor de um serviço efetuados no banco de dados, como que vc vai saber o total de faturamento mensal ou anual? Ex.: Vc imprimiu um relatório mostrando que foi faturado R$ 99.999,99 de serviços no mês de março de 2016. Se vc excluir um registro e imprimir outro relatório, o valor vai sair incorreto, já que informações foram perdidas…

Resumindo: Não é recomendado a exclusão de dados do banco em ambiente de produção, ou mesmo em ambiente acadêmico, já que temos que ter a ideia de desenvolver nosso sistema para disponibilizarmos externamente.

  • Mas caso seja apenas para testes e aprendizado, o mysql disponibiliza a seguinte funcionalidade a qual vc poderia pesquisar para saber se o mesmo ocorre para o banco de dados qual vc está utilizando:

SET FOREIGN_KEY_CHECKS=0;

  • A função acima permite que vc exclua qualquer chave primária desconsiderando as chaves estrangeiras, porém, pode ocorrer de vc excluir a chave primária de número 5 e quando vc cadastrar novamente um usuário com a chave 5, todos os registros irão ficar associados ao mesmo, como se vc tivesse feito apenas alteração no usuário.

Obs.: Não testei para saber se realmente o mesmo ocorre, mas já utilizei sistemas o qual aconteceu isto e presumo que os produtores do mesmo desbloqueou a verificação de foreign key com o código acima.

Dayson_Rodrigues

massa! ajudou muito seu comentário, é porque sou novo no desenvolvimento não consegui pensar assim rsrs. esta opção fica no próprio Mysql andei? poderia caso você saiba me da uma dica como deixaria isso no código?

Criado 3 de abril de 2016
Ultima resposta 4 de abr. de 2016
Respostas 2
Participantes 2