[firebase-br] Delete em cascata usando SQL
Marcilio Soares
marcilio.soares em brfree.com.br
Sex Out 8 13:33:26 -03 2004
porque vc nao manda o IB fazer isso pra vc nas relacoes FK e PK do banco ?
----- Original Message -----
From: "Francisco Thiago Almeida" <jeandeadlucky em yahoo.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Friday, October 08, 2004 11:07 AM
Subject: [firebase-br] Delete em cascata usando SQL
>
> 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
>
>
Mais detalhes sobre a lista de discussão lista