[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