Duvidas em construir trigger -- ERRO

Firebird

04/01/2006

o objecto é sempre que houver alterações num produto, pretendo guardar historico e numerar esse historico para cada produto
tipo:
produto A tem versao 1,2, 3
produto B podera ter 1
....


Executei este código mas esta dando erro, O QUE ESTOU FAZENDO MAU

CREATE TRIGGER ´nometrigger´ FOR ´nometabela´
ACTIVE BEFORE UPDATE POSITION 0
as
DECLARE VARIABLE num integer;
BEGIN

if (NEW.PREUNIT=OLD.PREUNIT) then
BEGIN

.......

END
ELSE
BEGIN
/*este select retornaum valor, ou NULL caso a tabela esteja vazia*/
for SELECT max(versaoP) FROM historico where produto=OLD.PRODUTO and versao=0 group by versaoP INTO :num
do
begin
//se a tabela estiver vazia
if (:num is NULL) then
:num = 1 ;
//se ja existir versoes incrementa
else
:num = 1 + :num;
end


INSERT INTO
Historico (PRODUTO, QUANT, PREUNIT,VERSAO, versaoP)
VALUES
(OLD.PRODUTO,
OLD.QUANT,
OLD.PREUNIT,
0,
:num
);
END
END



Agradeci a ajuda :wink:


Nilpedro

Nilpedro

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

04/01/2006

Que erro dá? Ocorre ao compilar a trigger ou ao executá-la?


GOSTEI 0
Nilpedro

Nilpedro

04/01/2006

Dá erro ao compilar


Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 22, char 17.
:.

em que linha 22 é

if (:num is NULL) then
:num = 1 ; /*linha 22*/
else
:num = 1 + :num;


GOSTEI 0
Gandalf.nho

Gandalf.nho

04/01/2006

Tire os : e veja se funciona.


GOSTEI 0
Nilpedro

Nilpedro

04/01/2006

ja tinha tentado tirar :, mas tirei em todos. Mas se tirar : só antes dos =s funciona.


Bigado pela atenção :wink:


GOSTEI 0
POSTAR