1
resposta

Efeito Cascata

Bom dia. Nessa aula a professora citou que o soft delete pode ser usado para manter a integridade e nao deletar dados relacionados entre si.

Uma duvida: há no sequelize uma propriedade que evite apagar um registro se ele esta relacionado em uma outra tabela?

Há um efeito "cascata" que caso eu apague uma Pessoa, ele apaga automaticamente todas as matriculas dessa pessoa tbm?

1 resposta

Olá Thiago. Tudo bem?

  • No Sequelize, não há uma configuração direta que impeça a exclusão de um registro se ele estiver relacionado a outro. No entanto, você pode implementar essa lógica manualmente no seu código, verificando se existem registros relacionados antes de permitir a exclusão. Isso pode ser feito com uma consulta ao banco de dados para verificar a existência de registros dependentes antes de executar o destroy.

  • O Sequelize suporta o efeito cascata através das opções de associação. Quando você define uma associação entre modelos, pode especificar a opção onDelete: 'CASCADE'. Isso significa que, ao deletar um registro pai, todos os registros filhos relacionados também serão deletados automaticamente. Por exemplo:

    Pessoa.hasMany(Matricula, { onDelete: 'CASCADE' });
    

    Com essa configuração, ao deletar uma Pessoa, todas as Matriculas associadas a essa pessoa serão deletadas automaticamente.

  • Soft Delete: Como você mencionou, o uso do paranoid: true no Sequelize permite implementar o soft delete. Isso significa que, em vez de deletar fisicamente um registro, ele apenas marca o registro como deletado, preenchendo a coluna deletedAt. Isso é útil para manter a integridade dos dados, pois o registro ainda existe no banco de dados, mas é ignorado nas consultas normais.

Espero ter ajudado.

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