Fórum Duvidas em construir trigger -- ERRO #54556

04/01/2006

0

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

Responder

Posts

04/01/2006

Gandalf.nho

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


Responder

Gostei + 0

04/01/2006

Nilpedro

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;


Responder

Gostei + 0

04/01/2006

Gandalf.nho

Tire os : e veja se funciona.


Responder

Gostei + 0

04/01/2006

Nilpedro

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


Bigado pela atenção :wink:


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar