[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