INSTRUÇÃO DE DELETAR (FIREBIRD)
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,
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
Curtidas 0
Respostas
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].
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