Re: [firebase-br] Trigger não funciona
Andrei Luís
compuvale.software em gmail.com
Sáb Nov 5 18:07:41 -03 2005
José Luiz,
A variável OLD não existe nos eventos Before Insert e Before Insert,
pois ela contem os valores antigos do registro. Ou seja, não existe um
valor antigo em um novo registro.
Veja a tabela abaixo: (retirada do livro Firebird Essencial)
Evento Variáveis de contexto
Before Insert New
After Insert New
Before Update New e Old
After Update New e Old
Before Delete Old
After Delete Old
Concluindo, para resolver seu problema, troque OLD por NEW.
[]
Andrei
Em 05/11/05, Jose Luiz<medeiros em pontenet.com.br> escreveu:
> Colegas..
>
>
>
>
>
> Tenho estas duas triggers uma funciona e a outra não. A primeira e para
> quando eu apagar um item da tabela item venda o estoque seria acrescido da
> quantidade daquele item, a outra faz exatamente ao contrario baixa no
> estoque a quantidade do item:
>
>
>
> ^
>
> CREATE TRIGGER ITEMVENDAS_DEL_ITEM FOR ITEMVENDAS
>
> ACTIVE BEFORE DELETE POSITION 0
>
> AS
>
> begin
>
> UPDATE produtos P set P.est_disp = P.est_disp + OLD.qtde
>
> WHERE P.id = OLD.idprod;
>
> end
>
> ^
>
>
>
> ESSA TRIGGER NO AFTERDELETE FUNCIONA BELEZA, MAS ESSA AQUI QUE E MUITO
> PARECIDA DA UM ERRO NA SUA CONFECÇÃO E CONSIGO CRIA-LA:
>
>
>
> ^
>
> CREATE TRIGGER ITEMVENDAS_INSERT_ITEM FOR ITEMVENDAS
>
> ACTIVE BEFORE INSERT POSITION 0
>
> AS
>
> begin
>
> UPDATE produtos P set P.est_disp = P.est_disp - OLD.qtde
>
> WHERE P.id = OLD.idprod;
>
> end
>
> ^
>
>
>
> ESSA NÃO FUNCIONA E ME DA O SEGUINTE ERRO QUANDO MANDO EXECUTA-LA NO
> IBEXPERT:
>
>
>
> Column does not belong to referenced table.
>
> Dynamic SQL Error.
>
> SQL error code = -206.
>
> Column unknown.
>
> OLD.QTDE.
>
> At line 5, column 53.
>
>
>
> O PRIMEIRO TRIGGER COMPILA BLZ O SEGUNDO DÁ ESSE ERRO.
>
>
>
> COMO SOU NOVO EM FIREBIRD ALGUEM PODERIA ME AJUDAR?
>
>
>
> GRATO:
>
>
>
> JOSE LUIZ
Mais detalhes sobre a lista de discussão lista