[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