[firebase-br] RES: RES: Erro ao criar Trigger

Willian Jhonnes L. dos Santos willianjhonnes em gmail.com
Ter Fev 2 10:11:22 -03 2010


Em 01/02/2010 23:42, Carlos Roberto escreveu:
> Tente entao trocar a trigger do BEFORE DELETE para AFTER DELETE.
> Talvez o OLD. não esteja disponível no contexto do BEFORE DELETE.
>    

Carlos Roberto, bom dia.

Vamos analisar sua sugestão: se eu mudar o contexto da trigger de BEFORE 
DELETE para AFTER DELETE, isso, seguindo o raciocínio lógico que se 
espera da operação, quebraria a consistência da minha chave estrangeira, 
haja visto que os dados da tabela UF (tabela pai) já teriam sido 
apagados, gerando a inconsistência na tabela MUNICIPIO (tabela filho).

Sei que estando numa transação, a exceção gerada pela trigger forçaria 
um rollback, desfazendo a inconsistência mas, e isso pode parecer 
extremismo da minha parte, isso é uma baita gambiarra.

O que mais me espanta é que isso [1] funcione, também referenciando o OLD.

[]'s

[1]
CREATE OR ALTER TRIGGER TR_VERIFICA_ITEM_VENDIDO_BD0 FOR NF_ENTRADA_ITENS
ACTIVE BEFORE DELETE POSITION 0

AS
     declare variable wcodigo Integer;
begin
     wcodigo= 0;
     select first 1 infs_infe_item
     from nf_saida_itens
     where (infs_infe_item = old.infe_item)
     into :wcodigo;
     if (:wcodigo>  0) then
        exception exception_msg 'Este item não pode ser excluído pois já foi
vendido !!!';
end

-- 


---------------------------------------------------
Att.:
Willian Jhonnes L. dos Santos
Analista/Desenvolvedor Object/Free Pascal
willianjhonnes em gmail.com
---------------------------------------------------
Seja livre. Use Linux.
Grupo de Usuários GNU/Linux de São José dos Pinhais
Linux user number 449753
---------------------------------------------------
Powered by Slackware Linux 13.0
Kernel 2.6.32.6-i686-core2quad
---------------------------------------------------




Mais detalhes sobre a lista de discussão lista