[firebase-br] Exclusão de mestre/detalhe

Daniel Sonda daniel em mhnet.com.br
Seg Nov 17 19:11:23 -03 2008


As tabelas se referem a requisicoes de almoxarifado e seus itens. Nos 
itens, tenho triggers AfterDelete que geram um log de exclusao (por 
item), onde tb é gravado uma informação que está na tabela mestre 
(requisicao).

Por isso, nesta trigger dos itens eu preciso acessar a tabela mestre.

Mas ao excluir o mestre, o "cascade delete" fazia a parte dele e, ao 
disparar a trigger na exclusao dos itens, o registro da tabela mestre 
(requisicao) nao era localizado, entao a informacao que eu precisava 
para o log vinha com valor NULL.

Mas já está resolvido.

Att.
Daniel Sonda
www.h2jsolucoes.com.br



Magno System escreveu:
> Daniel, mas como você está usando o SELECT dentro da TRIGGER.
>
> Acredito que o correto seria você fazer uma TRIGGER para a tabela 
> mestre e lançar os registros em uma outra tabela
>
> INSERT INTO TABELADELOG (CAMPO1, CAMPO2) VALUES(OLD.CAMPOEXCLUIDO1, 
> OLD.CAMPOEXCLUIDO2);
>
> Depois você faz um select para recuperar os registros de dentro da 
> TABELADELOG.
>
>
> ----- Original Message ----- From: "Daniel Sonda" <daniel em mhnet.com.br>
> To: "FireBase" <lista em firebase.com.br>
> Sent: Monday, November 17, 2008 1:58 PM
> Subject: [firebase-br] Exclusão de mestre/detalhe
>
>
> Olá pessoal!
>
> Identifiquei um comportamento do Firebird que achei anormal.
>
> Cenário:
>  - Duas tabelas num relacionamento mestre detalhe, com cascade update e
> delete na FK do detalhe com o mestre.
>  - Trigger BeforeDelete no detalhe com acesso a dados do registro
> mestre, usada para log de exclusão.
>
> Problema:
>  - Ao excluir o registro mestre, a trigger BeforeDelete dos registros
> detalhes é disparada.
>  - Esta trigger acessa dois campos do registro mestre para gerar um log
> de exclusão: select A, B from mestre where pk_mestre = old.pk_mestre
> into :var_A, :var_B.
>  - Aqui está o problema: var_A e var_B sempre retornam NULL, como se o
> registro mestre já tivesse sido excluído quando os registros detalhes
> estão sendo excluídos. Ou seja, o mestre não é localizado.
>
> É assim mesmo que funciona? Ao exclui o mestre, na trigger before delete
> dos detalhes eu não consigo mais consultar os dados do mestre?
>




Mais detalhes sobre a lista de discussão lista