[firebase-br] Delete em cascata usando SQL
Raul Iavelberg
raul.iavelberg em itelefonica.com.br
Sex Out 8 13:21:58 -03 2004
Francisco,
Sou novo no FB, mas lá vai: não sei o que você precisa exatamente em sua
aplicação,
mas, talvez, o melhor seja declarar os relacionamentos entre as tabelas
com "DELETE CASCADE",
assim, quando fosse dado um delete, em qualquer um dos níveis, tudo o
que houvesse para "baixo"
seria automaticamente deletado.
[]s
Raul
Danilo Rogério wrote:
>Thiagão e Luiz... não sei, mas vc não deveria tentar no início do seu delete colocar o código da transferência???
>Por Ex:
>
>DELETE FROM TRANSFERIDO TRS
>WHERE TRS.CODIGO_TRANSFERENCIA IN (
> SELECT T.CODIGO
> FROM TRANFERENCIA T
> WHERE T.CODIGO_VENDA_LOTE IN (
> SELECT VL.CODIGO
> FROM VENDALOTE L
> WHERE VL.CODIGO_LOTE IN (
> SELECT L.CODIGO
> FROM LOTE L
> WHERE LOTEAMENTO = 16
> )
> )
> )
>
>
>Posso estar falando besteira mas o vc deve usar um parâmetro(coluna) antes do IN...
>
>Até mais,
>Danilo
>
>Francisco Thiago Almeida <jeandeadlucky em yahoo.com.br> wrote:
>
>Caros amigos,
>
>O meu colega de servico tem de fazer um delete em cascata com a seguinte estrutura (pais acima, filhos abaixo. Todas as relacoes sao NxN)
>
>Loteamento (este será o excluido)
>Lote
>VendaLote
>Parcela | Comprador | Transferencia
>Transferido
>
>Como a cascata até transferido é a maior, nós comecamos o teste com ela e usamos o SQL:
>
>DELETE FROM TRANSFERIDO TRS
>WHERE IN (
>SELECT T.CODIGO
>FROM TRANFERENCIA T
>WHERE IN (
>SELECT VL.CODIGO
>FROM VENDALOTE L
>WHERE IN (
>SELECT L.CODIGO
>FROM LOTE L
>WHERE LOTEAMENTO = 16
>)
>)
>)
>E demorou muito pra executar!!! (E não existem registros na tabela de Transferido. Para tentar solucionar tentamos outro SQL:
>
>DELETE FROM TRANSFERIDO TRS
>WHERE EXISTS (
>SELECT T.CODIGO
>FROM TRANFERENCIA T
>WHERE EXISTS (
>SELECT VL.CODIGO
>FROM VENDALOTE L
>WHERE EXISTS (
>SELECT L.CODIGO
>FROM LOTE L
>WHERE LOTEAMENTO = 16
>AND VL.LOTE = L.CODIGO
>)
>)
>)
>Este sequer chegou ao fim de sua execução.
>
>Neste caso, o que acontece no BDE? (isso mesmo, BDExPiradox) A consulta com o Exists nao deveria ser mais veloz? Vocês acham que rolar tabela seria mais rápido? Existe uma forma de otimizar este consulta?
>
>
>
>Obrigado
>
>
>
>
>
>-----------------------------------------------
>Francisco Thiago de Almeida
>MRL Consultoria em Informática
>Divisão Desenvolvimento e Banco de Dados
>Franca/SP
>
>---------------------------------
>Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador agora!
>______________________________________________
>FireBase-BR (www.firebase.com.br)
>Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>
>
>---------------------------------
>Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador agora!
>______________________________________________
>FireBase-BR (www.firebase.com.br)
>Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>
>
>
>
Mais detalhes sobre a lista de discussão lista