[firebase-br] RES: RES: DELETE CASCADE

Alysson Gonçalves de Azevedo agalysson em gmail.com
Sex Nov 9 18:44:56 -03 2012


>
> Então a solução é usar Trigger, consequentemente os itens (o filho) será
> deletado primeiro.
>
> Trocar o simples comando ON DELETE CASCADE no final de uma FK por diversas
> linhas de código.
>

Repare que o cascade provavelmente não foi criado pensando na possibilidade
de que o "detail" precisaria de informações do "master" antes de ser
apagado. Se você imaginar um cadastro de agenda de contato, quando apaga o
contato, você simplesmente deleta os telefones dele. Mais nada.

Se no seu caso, você precisa da ordem que você citou, alguém, em outro
caso, poderia precisar de outra ordem . Qual de vocês estaria certo?

Concorda que num sistema grande, não apenas vai ter tabelas pai e filho,
como tabela pai, tabela filha1, tabela filha2, tabela netaN. Quem definiria
a sequencia a ser seguida pelo CASCADE? Manualmente? Com certeza haveria
aqueles que diriam "Vou ter que programar diversas linhas de código".

O cascade serve muito bem para o que ele faz, deletar os filhos quando o
registro pai for deletado.
Se você precisa de outra coisa, sorte a sua existir as triggers que
permitem você fazer exatamente o que você precisa.




Alysson Gonçalves de Azevedo - (11) 984 917 730

"É curioso como as pessoas ficam confusas quando a frase não terminam do
jeito que elas periquito."



Em 9 de novembro de 2012 13:36, Jonas Rodrigo Pacheco <
jonas.pacheco em tecnicon.com.br> escreveu:

> Perfeito,
>
> Então a solução é usar Trigger, consequentemente os itens (o filho) será
> deletado primeiro.
>
> Trocar o simples comando ON DELETE CASCADE no final de uma FK por diversas
> linhas de código.
>
> Thanks! This very productive.
>
> Jonas Rodrigo Pacheco
> Administrador de Banco de Dados
>
>
> -----Mensagem original-----
> De: lista [mailto:lista-bounces em firebase.com.br] Em nome de Alysson
> Gonçalves de Azevedo
> Enviada em: sexta-feira, 9 de novembro de 2012 11:44
> Para: Carlos H. Cantu; FireBase
> Assunto: Re: [firebase-br] RES: DELETE CASCADE
>
> Naquele link do Cantu, 3º resposta, se eu não me engano, Vlad Khorsun<
> http://tracker.firebirdsql.org/secure/ViewProfile.jspa?name=hvlad> um dos desenvolvedores principais (não tenho certeza, mas chutaria que ele
> deve ser um dos criadores iniciais).
>
> Ele disse: "It's as designed and not a bug", que eu acredito que dispensa
> até uma tradução da minha parte.
>
>
>
>
> Alysson Gonçalves de Azevedo - (11) 984 917 730
>
> "É curioso como as pessoas ficam confusas quando a frase não terminam do
> jeito que elas periquito."
>
>
>
> Em 9 de novembro de 2012 11:21, Carlos H. Cantu
> <listas em warmboot.com.br>escreveu:
>
> > JRP> Criar mais uma trigger porque o delete cascade não funciona
> > JRP> conforme
> > o esperado?
> >
> > "Conforme esperado" é questão de ponto de vista, como vc deve ter lido
> > nos comentários do link que eu postei ;)
> >
> > JRP> Discordo do que está escrito no
> > JRP> http://tracker.firebirdsql.org/browse/CORE-1541, na minha opinião
> > JRP> é um bug sim, pois se há um processo de controle transacional
> > JRP> descente ele deve fazer um lock/bloqueio no registro que vai ser
> > JRP> deletado (não permitindo que novos filhos sejam inseridos por
> > JRP> outra transação usando o registro pai que vai ser deletado),
> > JRP> deleta os 'filhos' e então, para finalizar deleta o registro pai.
> >
> > Se você acha que é um bug, o Firebird tem código aberto, e vc é mais
> > do que bem vindo para corrigi-lo e enviar as atualizações para o
> > projeto. Não espere que eles façam isso, pois como vc deve ter lido,
> > os atuais core developers não consideram isso um bug.
> >
> > []s
> > Carlos H. Cantu
> > www.FireBase.com.br - www.firebirdnews.org www.warmboot.com.br -
> > blog.firebase.com.br
> >
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br Para
> saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista