[firebase-br] SP com comando DELETE?

Sandro Souza escovadordebits em gmail.com
Qui Mar 5 10:46:40 -03 2009


Bom dia/tarde Marcelo.

Pelo que pude entender, a tabela TB_HISTORICO tem uma chave estrangeira para
a tabela TB_APARELHO, e nessa chave estrangeira você acrescentou a opção ON
DELETE CASCADE.

Mas também entendi que tanto a tabela TB_LEITURA quanto a tabela TB_DESCARTE
tem, por sua vez, chaves estrangeiras para a tabela TB_HISTORICO, e nesse
caso, você também acescentou a mesma opção de ON DELETE CASCADE nessas duas
outras chaves estrangeiras?

Podemos ver na mensagem de erro, que a regra violada foi a
FK_TB_HISTORICO_LEITURA que está na tabela TB_LEITURA, ou seja, eu imagino
que faltou recriar essa chave estrangeira com a opção ON DELETE CASCADE,
assim como pode estar faltando fazer o mesmo na respectiva chave estrangeira
da tabela TB_DESCARTE para a TB_HISTORICO.

Lembre-se que essa opção ON DELETE CASCADE tem que ser acrescentada em todas
as chaves estrangeiras em que você quer automatizar a exclusão.

Espero ter ajudado mais que atrapalhado. :D

Em 17/02/09, Marcelo Guilherme Tamanini <marcelo_tamanini em hotmail.com>
escreveu:
>
>
>
>
>
> Bom dia.
> Obrigado pela ajuda.
>
> Então, fiz como vc me disse, deixei agora com CASCADE a chave estrangeira
> da minha tabela Historico, só que está gerando erro ao tentar excluir:
> violation of FOREIGN KEY constraint "".
> violation of FOREIGN KEY constraint "FK_TB_HISTORICO_LEITURA" on table
> "TB_LEITURA".
> Foreign key references are present for the record.
> At trigger 'CHECK_1'
> At procedure 'STP_EXCLUIRAPARELHO' line: 5, col: 3.
>
> O que seria esse trigger CHECK_1? Pois eu verifiquei aqui e não existe esse
> trigger!
>
> Estou fazendo da seguinte maneira agora:
> BEGIN
> DELETE FROM TB_Aparelho
> WHERE CodAparelho = :CodAparelho;
> END
>
>
> As tabelas filhas de tb_historico são necessárias que eu deixe tb como
> CASCADE?
> A hierarquia das minhas tabelas estão na seguinte ordem:
> TB_APARELHO
> CodAparelho PK
>
>
> TB_HISTORICO
> CodHistorico PK
> CodAparelho  FK
>
>
> TB_LEITURA
> CodLeitura    PK
> CodHistorico  FK
>
>
> TB_Descarte
> CodDescarte   PK
> CodHistorico  FKAbraço
>
>
> Date: Thu, 12 Feb 2009 15:43:05 -0300
> From: escovadordebits em gmail.com
> To: lista em firebase.com.br; marcelo_tamanini em hotmail.com
> Subject: Re: [firebase-br] SP com comando DELETE?
>
>
>
>
>
>
>
>
>
> Bom dia/tarde Marcelo.
>
>
>
> Grande Marcelo, não sei quem lhe disse essa "pérola" sobre ser melhor
> você fazer todo o trabalho que deixar o próprio SGBD fazer por você,
> mas é melhor avisar a essa pessoa que o cogumelo que foi utilizado no
> chá já deve estar vencido. :D
>
>
>
> O ideal é que o SGBD sempre faça o trabalho "mais pesado" e que você
> fique com o trabalho "mais leve", entre outras coisas, é para isso que
> serve ele.
>
>
>
> Já pensou se você, ao contrário de utilizar um JOIN, tivesse que
> executar dois ou mais SELECTs e comparar os campos registro a registro
> apenas "para ter o controle"? :D É Clipper? Ou Cobol? :D
>
>
>
> Desculpe a piada, é que eu não resisti.
>
>
>
> Acredito que essa pessoa que lhe "aconselhou" ainda não
> compreenda muito bem o que é um SGBD, para que serve, e que
> vantagens ele lhe dá.
>
>
>
> Concordo em gênero, número e grau com o que nosso amigo Zottis falou
> sobre o uso da cláusula ON DELETE CASCADE na respectiva chave
> estrangeira para automatizar o processo de deleção.
>
>
>
> Mas de qualquer forma, é só uma sugestão. A decisão é sempre sua.
>
>
>
> Espero ter ajudado mais que atrapalhado. :D
>
> _________________________________________________________________
> Explore the seven wonders of the world
> http://search.msn.com/results.aspx?q=7+wonders+world&mkt=en-US&form=QBRE
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista