INSTRUÇÃO DE DELETAR (FIREBIRD)

Firebird

21/06/2004

CAROS,
tenho um banco de dados com as seguintes tabelas
LANCAMENTOS -> lancamentos do meu plano de contas
PLANO -> registros do plano de contas
tem 4 nivels no meu plano de contas
1
1.01
1.01.01
1.01.01.001

existe um campo, em PLANO, chamado ID (identificador do registro-unico). Existe um campo, em LANCAMENTOS, chamado ID_PLANO, que faz referene entre as duas tabelas.


Meu problema é : .. se eu deletar uma conta, exemplo, conta 1.01.01.001 (id=300), basta eu montar a instrucao em LANCAMENTOS, excluindo o registor cuja referencia em ID_PLANO = ID (em plano), ok. sem problemas
O detalhe é :, vamos supor qu eu delete a conta 1.01 (cujo ID=144), nao posso simplesmente deletar o ID_PLANO (em lancamentos) cuja referente lhe pertence, tenho que deletar os registros filhos que estao em (1.01....) em (PLANO e LANCAMENTOS). (DELECAO EM CASCATA).


SELECT COUNT(*) FROM LANCAMENTOS L
LEFT JOIN PLANO PL ON(PL.ID = L.ID_PLANO)
WHERE PL.NRCONTA LIKE :CONTA || ´¬´

neste select, consigo visualizar todos os registros pai-filhos., mas esta instrucao nao funciona em a instrucao DELETE, exemplo >

DELETE FROM LANCAMENTOS L
LEFT JOIN PLANO PL ON(PL.ID = L.ID_PLANO)
WHERE PL.NRCONTA LIKE :CONTA || ´¬´.

Alguma dicas ? tenho uma solucao, mas fica baseada num DO WHILE, gostaria de fazer numa instrucao SQL, por se muito mais rapido.

Obrigado.
No aguardo,


Pedih

Pedih

Curtidas 0

Respostas

Sandra

Sandra

21/06/2004

Tópico bloqueado!

Não postar o título utilizando caixa alta, pois equivale a gritar. Por favor, releia as [url=http://delphiforum.icft.com.br/forum/viewtopic.php?t=6689]Regras de Conduta[/url].


GOSTEI 0
POSTAR