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