[firebase-br] Delete em cascata usando SQL

Danilo Rogério danilorsa_betta em yahoo.com.br
Sex Out 8 11:17:31 -03 2004


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!


Mais detalhes sobre a lista de discussão lista